grails spring security登录页面显示

时间:2012-01-20 11:45:49

标签: grails spring-security grails-plugin

我在Grails应用程序中使用spring security插件。登录页面显示的原因有两个

  1. 用户直接导航到
  2. 用户尝试访问仅供登录用户使用的页面
  3. 仅在(2)的情况下,我想显示一条消息,例如“您试图访问需要登录的页面”,但在登录页面的GSP代码中我找不到区分方法(1)和(2),这可能吗?

2 个答案:

答案 0 :(得分:1)

当您被重定向时,Spring Security会在SavedRequest密钥下的会话中存储SPRING_SECURITY_SAVED_REQUEST_KEY,因此您可以检查auth.gsp中是否存在{<1}}:

<g:if test='${session.SPRING_SECURITY_SAVED_REQUEST_KEY}'>
   // display "you attempted to access a page that requires login"
</g:if>
<g:else>
   // direct access to login
</g:else>

答案 1 :(得分:0)

您可以将各种弹簧安全配置的URL更改为指向控制器,然后根据会话中的信息进行分支。在1.3.7项目中做了类似

的事情
security {
  authenticationFailureUrl = '/logout/doLogout'
  afterLogoutUrl = '/logout/doLogout'
}

然后

class LogoutController {
   def doLogout = {
       def wasHere = session.getAttribute('some-attribute-you-set')
       if (wasHere) render view: 'requirelogin'
       else render view: 'normallogin'       
   }
}