gpt4 book ai didi

grails - Grails gsp : Is there a way to abort once your render a gsp page?

转载 作者:行者123 更新时间:2023-12-02 15:45:04 31 4
gpt4 key购买 nike

从gsp页(或类型库)是否可以中止html页的生成并回调到 Controller 方法以输出403 header ?

我们有一组用于管理页面的脚手架页面,并对其进行了修改,以测试访问该页面的用户是否具有管理特权。如果没有,我们将生成一个指示“不是管理员消息”的html页面(而不是该页面的常规脚手架代码,即edit.gsp)。这里的问题是http响应是200,我真的希望响应状态代码是403。

与域对象关联的 Controller 为空,除了启用了脚手架外,我们已经生成了脚手架页面(通过grails generate-view cmd),我们还修改了这些页面以测试用户是否为管理员。

因此,我的问题在gsp页中变成了一次,我们如何才能中止并调用另一个 Controller 来生成403错误 header ?有没有一种方法可以从gsp页面执行此操作,还是必须定义与 View 页面名称匹配的 Controller 方法,并在 Controller 方法中测试用户是否是管理员,然后发出403错误?

宁愿选择一种方法来中止当前gsp页面的生成,并能够调用其他 Controller 来生成403 header 。

最佳答案

我相信您最好的方法是使用拦截器或过滤器。我打算提供一个示例,但是这里已经有非常好的示例:https://grails.github.io/grails2-doc/2.4.4/guide/theWebLayer.html#interceptorshttps://grails.github.io/grails2-doc/2.4.4/guide/single.html#filters

基本上,任一代码都是将在执行 Controller Action 之前(或之后,但在您而言是:之前)执行的代码。您可以访问参数, session 等,因此您可以执行“此人是管理员”之类的逻辑。您还可以修改响应,以便可以重定向到“权限被拒绝”页面或将状态设置为403或您需要执行的任何操作。

关于grails - Grails gsp : Is there a way to abort once your render a gsp page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909179/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com