2013-04-13 124 views
1

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

我可以很容易地编辑所有请求映射错误的模板,但也有一些限制页面没有人应该看到像'无法访问'这样的消息是完美的。

有两种不同的错误页面可以做到这一点吗? 谢谢。

回答

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' 
      } 
     } 
    } 
}