带有 id_user 的 Spring Security 用户按用户名查询
itcoder
阅读:60
2024-05-10 16:29:43
评论:0
我想使用 spring security,但我以前从未使用过它。我想从我的表(用户、角色和 user_roles)中检索用户和角色。我调查了 users-by-username-query 。在所有示例中都与以下示例相同。
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query=
"select username,password, enabled from users where username=?"
authorities-by-username-query=
"select username, role from user_roles where username =? " />
</authentication-provider>
</authentication-manager>
但我想使用 id_user 和 id_role 而不是 用户名 和 角色 。是否可以 ?我必须更改登录页面字段名称吗?
提前致谢
请您参考如下方法:
这是一种常见的情况。
首先,正如我在评论中所建议的,使用别名来重命名代表用户名、密码以及用户是否启用的字段。像这样:
users-by-username-query=
"select user.user_login as username, user.user_pwd as password, user.user_enabled as enabled
from user where user.user_login=?"
然后,通常也将
authorities
放在与
user
表有某种关联的不同表中。这是一个常见的情况:
其中用户与
n-to-n
关系中的角色相关。
在这种情况下,
authorities-by-username-query
应该是这样的
authorities-by-username-query=
"SELECT users.name as username, roles.role as role
FROM users
INNER JOIN user_role ON users.id_user = user_role.id_user
INNER JOIN roles ON user_role.id_role = roles.id_role
WHERE users.name = ? "
作为测试,对于包含此数据的一组表:
用户:
角色:
用户角色
对于收到的用户名 jlumietu,结果应该是这样的:
最后,我有一些扩展 org.springframework.security.authentication.dao.DaoAuthenticationProvider 的情况,但我认为这是进行此类处理的最简单方法
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。