gpt4 book ai didi

java - 支持 Spring Security "ROLE_"前缀的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-30 07:49:25 24 4
gpt4 key购买 nike

如果您支持的旧应用程序没有所有角色的前缀,那么支持“ROLE_”前缀的最佳方式是什么?有没有办法忽略或忽略它的加载?

最佳答案

似乎没有一种简单的方法可以忽略正常的 spring 安全配置中的前缀。但是,我发现从数据库加载时,您可以轻松地将“ROLE_”附加到所有角色。我只是使用 MySQL 中的 CONCAT 函数将“ROLE_”添加到所有角色。见下文:

<authentication-manager>
<authentication-provider>
<password-encoder hash="md5"/>
<jdbc-user-service
data-source-ref="dataSource"
authorities-by-username-query="SELECT username, CONCAT('ROLE_', rolename) as authority FROM user_role WHERE active = 1 AND username = ?"
users-by-username-query="SELECT username, password, active FROM user WHERE username = ?" />
</authentication-provider>
</authentication-manager>

如果您使用 UserDetailsS​​ervice 接口(interface)创建自己的类,也可以应用此概念:

<!-- Select users and user_roles from database -->
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="myUserDetailsService">
<password-encoder ref="encoder" />
</authentication-provider>
</authentication-manager>

<beans:bean id="encoder" class="com.my.security.MyPasswordEncoder" />

注意:我对“身份验证管理器”使用“别名”而不是 ID,因为如果我覆盖默认 ID,则在身份验证过程中我的自定义似乎会被忽略。

关于java - 支持 Spring Security "ROLE_"前缀的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33480183/

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