我使用Grails完成了一个使用Spring Security的请求映射的websoftware。 我出于安全原因使用它们,因此用户无法访问管理区域,但它也用于我们的业务模型。我们有两个不同的用户角色。一个是高级,一个是高级加,而PREMIUM_PLUS>溢价。 高级用户可以访问比高级用户更多的页面。如果高级用户想要访问只能由高级用户调用的页面,则会出现“无法访问”这样的错误,但我想要一个自定义消息,例如“立即升级到高级版本”。
我可以轻松编辑所有请求映射错误的模板,但也有一些限制页面,没有人应该看到“无访问”这样的消息是完美的。
是否有可能使用两个不同的错误页面执行此操作? 谢谢。
答案 0 :(得分:1)
LoginController
的动作denied
显示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'
}
}
}
}