grails spring安全登录页面显示

Posted

技术标签:

【中文标题】grails spring安全登录页面显示【英文标题】:grails spring security login page display 【发布时间】:2012-02-14 23:46:47 【问题描述】:

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

    用户直接导航到它 用户试图访问仅对登录用户可用的页面

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

【问题讨论】:

【参考方案1】:

当您被重定向时,Spring Security 会在会话中的 SPRING_SECURITY_SAVED_REQUEST_KEY 键下存储一个 SavedRequest,因此您可以在 auth.gsp 中检查它是否存在:

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

【讨论】:

【参考方案2】:

您可以更改各种 spring 安全配置的 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'       
   

【讨论】:

以上是关于grails spring安全登录页面显示的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Grails Spring Security 2.0 中的登录/页面成为初始屏幕?

grails 3 spring security boot starter登录页面定制

Grails Spring Security - 登录后总是重定向到特定页面?

Grails Spring 安全性

Grails Spring Security 使用 https 重定向到登录页面

Grails Spring Security登录失败未重定向到登录视图