gpt4 book ai didi

mysql - spring security 3.0 无法获取/处理用户凭据

转载 作者:行者123 更新时间:2023-11-29 00:51:39 27 4
gpt4 key购买 nike

请帮我解决下面提到的场景....

applicationContext-security.xml

<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT username, password FROM myLibrary.user WHERE username=?" />
</authentication-provider>
</authentication-manager>

数据库端(MySQL)

CREATE TABLE `myLibrary`.`user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`enabled` bit(1) DEFAULT NULL,
`fullName` varchar(255) DEFAULT NULL,
`password` varchar(120) DEFAULT NULL,
`username` varchar(40) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY `username` (`username`)
);

xml用户

<user-service>
<user name="admin" password="amdin" authorities="supervisor, user" />
<user name="counter1" password="counter1" authorities="user" />
</user-service>

"数据源";值(value)观也很完美......!!!并且在任何日志中都没有异常……这意味着库集成是完美的。事实上,当使用基于 XML 的用户定义时,它工作得很好......但在数据库访问中它失败了。

我的登录页面保持不变;我的意思是登录失败。请帮助 friend ....!!!!

最佳答案

您需要稍微更改一下查询,因为 JdbcDaoImpl期望 3 个参数:

  • 用户名
  • 密码
  • 启用

所以你需要添加 true 作为最后一个参数:

<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT username, password, true
FROM myLibrary.user WHERE username=?" />

不幸的是,这在 api 中没有很好的记录,但你应该看看 source codeorg.springframework.security.core.userdetails.jdbc.JdbcDaoImpl


顺便说一句:如果您使用授权,那么您还必须指定一个authorities-by-username-query(除了默认的是您需要的)

<jdbc-user-service
data-source-ref="dataSource"
users-by-username-query="SELECT username, password, true FROM myLibrary.user WHERE username=?"
authorities-by-username-query="SELECT username,authority from users WHERE username=?"
/>

当然这是一个示例,查询可能不适用于您的表!

关于mysql - spring security 3.0 无法获取/处理用户凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com