Grails 1.3.5 和 Spring Security Core
Posted
技术标签:
【中文标题】Grails 1.3.5 和 Spring Security Core【英文标题】:Grails 1.3.5 and Spring Security Core 【发布时间】:2011-04-22 17:16:10 【问题描述】:我已经构建了一个 grails 应用程序,它在登录时根据用户的角色(在角色域中定义的自定义角色)将用户重定向到不同的 URL。现在我正在尝试将 Spring Security Core Grails Plugin 集成到应用程序中,因此计划使用插件的域模型。
我了解 LoginController 中的 auth 操作会执行用户登录验证,如果用户已登录,则会重定向到默认目标 URI。 我的问题是如何知道登录用户的类型是 ROLE_ADMIN 还是 ROLE_USER 或任何其他 ROLE?如何在这里检查权限,然后重定向到不同的 URI?
我还想知道用户验证是如何完成的,即在 Spring Security 中,用户名和密码是如何以及在哪里验证数据库的?
谢谢。 杰伊·钱德兰。
【问题讨论】:
【参考方案1】:重定向发生在 org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler
中,但插件在 org.codehaus.groovy.grails.plugins.springsecurity.AjaxAwareAuthenticationSuccessHandler
中扩展了此类以支持 Ajax 登录。
如果您想根据角色自定义重定向位置,我将继承 AjaxAwareAuthenticationSuccessHandler
并覆盖 onAuthenticationSuccess()
。您将有权访问身份验证,因此您可以检查授予的权限并根据这些决定去哪里。
然后在resources.groovy中用你的替换插件的bean:
import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils
beans =
authenticationSuccessHandler(MyAuthenticationSuccessHandler)
def conf = SpringSecurityUtils.securityConfig
requestCache = ref('requestCache')
redirectStrategy = ref('redirectStrategy')
defaultTargetUrl = conf.successHandler.defaultTargetUrl
alwaysUseDefaultTargetUrl = conf.successHandler.alwaysUseDefault
targetUrlParameter = conf.successHandler.targetUrlParameter
ajaxSuccessUrl = conf.successHandler.ajaxSuccessUrl
useReferer = conf.successHandler.useReferer
【讨论】:
非常感谢。我相信我会有更多的疑问。以上是关于Grails 1.3.5 和 Spring Security Core的主要内容,如果未能解决你的问题,请参考以下文章
Grails Spring Security 验证多个 url 的访问
Grails 使用 spring-security-core-3.0.6+ 重定向注销后