【发布时间】:2011-05-28 17:52:36
【问题描述】:
我在 grails acegi 插件(版本 0.5.3)的记住我功能上遇到问题
第一次登录时,我选中记住我复选框并登录。这行得通。然后我关闭浏览器并重新启动它并浏览到应用程序。登录页面显示填充了用户名、密码为空并选中了记住我复选框。我本来希望直接导航到应用程序(http://localhost:8080/application 通常重定向到我的登录页面)。如果我尝试手动登录(输入密码)它现在不起作用,我无法通过登录页面。
这是我的登录表单:
<form action='${postUrl}' method='POST' id='loginForm' class='cssform'>
<p>
<label for='j_username'>Email</label>
<input type='text' class='text_' name='j_username' id='j_username' value='${request.remoteUser}' />
</p>
<p>
<label for='j_password'>Password</label>
<input type='password' class='text_' name='j_password' id='j_password' />
</p>
<p>
<label for='remember_me'>Remember me</label>
<input type='checkbox' class='chk' name='_spring_security_remember_me' id='remember_me'
<g:if test='${hasCookie}'>checked='checked'</g:if> />
</p>
<p>
<input type='submit' value='Login' />
</p>
</form>
SecurityConfig.groovy
/** rememberMeServices */
cookieName = 'grails_remember_me'
alwaysRemember = false
tokenValiditySeconds = 1209600 //14 days
parameter = '_spring_security_remember_me'
rememberMeKey = 'grailsRocks'
这只是默认生成的行为。我错过了一些简单的东西吗?我是否需要手动设置 rememberMeServices 之类的?
我已确认“grails_remember_me”cookie 是使用 chrome 开发者工具创建的。我在使用 firefox 时也有同样的行为。
有什么想法吗?谢谢
【问题讨论】:
-
由于这似乎不是完整的 SecurityConfig.groovy,我只想检查一下:您是否在安全配置中的某处重新定义了属性
providerNames,从而可能无意中遗漏了rememberMeAuthenticationProvider?这可能会导致你得到的行为。否则,您的配置看起来与我们的相似,并且记住我功能有效。 -
我没有重新定义“providerNames”。但是,如果我查看已安装插件的“DefaultSecurityConfig”,我看不到“providerNames”的任何提及。是否应该在插件或应用程序的配置中定义“providerNames”?
-
不,如果您不指定 providerNames,将使用默认值,您应该没问题。我只是在猜测,也许你在那里定义了一些你自己的东西,这可能会导致你的问题。看来一定是别的什么东西。
标签: authentication grails spring-security