Res*_*eff 3 authentication spring spring-mvc spring-security spring-boot
我想使用spring security但我以前从未使用它.我想从我的表(用户,角色和user_roles)中检索用户和角色.我已经调查过用户名,用户名查询.在所有示例中与以下示例相同.
<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>
Run Code Online (Sandbox Code Playgroud)
但我想使用 id_user和id_role而不是 用户名和角色.可能吗 ?我必须更改登录页面字段名称吗?提前致谢
jlu*_*etu 10
这是一种常见的情况.
首先,正如我在评论中建议的那样,使用别名重命名代表用户名,密码和用户启用或不启用的字段.像这样:
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=?"
Run Code Online (Sandbox Code Playgroud)
然后,通常也有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 = ? "
Run Code Online (Sandbox Code Playgroud)
作为测试,对于包含此数据的一组表:
用户:
角色:
USER_ROLE
对于收到的用户名jlumietu,结果应为:
最后,我有一些案例,我已经扩展了org.springframework.security.authentication.dao.DaoAuthenticationProvider,但我认为这是进行这种处理的最简单方法
| 归档时间: |
|
| 查看次数: |
4978 次 |
| 最近记录: |