1

我有一个使用来自 Spring Security 的请求映射的 Grails 完成的网络软件。我出于安全原因使用它们,以便用户无法访问管理区域,但它也用于我们的业务模型。我们有两个不同的用户角色。一种是高级,一种是高级加,而 PREMIUM_PLUS > PREMIUM。高级用户可以访问比高级用户更多的页面。如果高级用户想要访问只能由高级用户调用的页面,则会出现“无法访问”之类的错误,但我想要一条自定义消息,例如“立即升级到高级版”。

我可以轻松地为所有请求映射错误编辑模板,但也有一些受限页面没有人应该看到像“禁止访问”这样的消息最适合的地方。

有没有可能用两个不同的错误页面来做到这一点?谢谢你。

4

1 回答 1

1

LoginControllerdenied显示denied.gsp. _ 您可以自定义控制器操作以检查是否需要显示升级页面或拒绝页面。

class LoginController  {
    def denied() {
        if (springSecurityService.isLoggedIn() &&
        authenticationTrustResolver.isRememberMe(SCH.context?.authentication)) {
            // have cookie but the page is guarded with IS_AUTHENTICATED_FULLY
            redirect action: 'full', params: params
        } else {
            //implement a method checking whatever you need to define that will display the upgrade
            if(mustShowUpgrade()) {
                render view: 'upgrade'
            }
        }
    }
}
于 2013-04-13T12:46:08.253 回答