我几乎完成了 Grails 2.2.1 到 2.3.4 以及 Spring Security Plugin 1.2.7.3 到 2.0 RC2 的升级。我正在运行该应用程序,但是当我尝试登录时,我得到:
java.lang.IllegalArgumentException: Salt value must be null when used with crypto module PasswordEncoder
我一直无法弄清楚这一点,也没有找到任何与 grails 或 spring security 插件相关的错误的有用提示...
我使用自定义 UserDetailsService 设置了盐,如本博客文章中所述:http://grailsplayground.blogspot.com/2011/10/setting-up-grails-web-application-using.html
我不知道我是否需要以不同的方式做盐(如果新插件有更好的方法来做到这一点),或者我是否只需要更改一些小东西(就像我必须通过更改 grails.txt 的升级过程所做的那样)。 plugins.springsecurity 到 grails.plugin.springsecurity)
log4j 输出(尝试进行身份验证):
web.FilterChainProxy - /j_spring_security_check at position 3 of 8 in additional filter chain; firing Filter: 'RequestHolderAuthenticationFilter'authentication.ProviderManager - Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider
dao.DaoAuthenticationProvider - Authentication failed: password does not match stored value
rememberme.TokenBasedRememberMeServices - Interactive login attempt was unsuccessful.
rememberme.TokenBasedRememberMeServices - Cancelling cookie
2.0 中的默认算法是 bcrypt,它不支持提供的盐,因为它在内部使用自己的盐。因此,取消配置任何与盐相关的设置(例如dao.reflectionSaltSourceProperty
财产或习俗saltSource
bean)并使用默认值,或使用password.algorithm
属性(例如使用 SHA-256)并配置盐设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)