gpt4 book ai didi

java - 来自 CAS 的用户名和来自另一个数据库的角色

转载 作者:行者123 更新时间:2023-11-30 11:26:21 26 4
gpt4 key购买 nike

我在带有 MySQL 数据库的 tomcat 7 上运行 CAS 3 Spring 3.2 和 Spring Security 3.2。

我们使用 MySQL 数据库和 CAS 来验证用户,然后我们在成功后传递属性,我们从一个名为 say"sso"的数据库中获取这些详细信息

<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">

<constructor-arg index="0" ref="dataSource"/>
<constructor-arg index="1" value="select * from user where {0}" />
<property name="queryAttributeMapping">
<map>
<entry key="username" value="user_name" />
</map>
</property>

<property name="resultAttributeMapping">
<map>
<entry key="user_name" value="username" />
<entry key="full_name" value="fullname" />
</map>
</property>
</bean>

在那之后我们要做的是从这些属性中获取用户名,然后转到应用程序特定的数据库,比如称为“app”。

所以我们要做的是在认证成功后从CAS中获取用户名,然后从数据库中获取其角色。

我们怎样才能正确地做到这一点?

更新

现在我已经尝试过,但我真的不知道它是否有效。

我已经实现了 UserDetailsS​​ervice 并创建了一个 UserEntityDetails,它扩展了我的 UserEntity 并实现了 UserDetails,然后我使用我的 UserDetailsS​​ervice 加载我自定义创建的类。

然后在我的 XML 中我做了这个

<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
</security:authentication-manager>

这样做正确吗?

最佳答案

除非我误解了你的问题,否则你要求的是正常的使用模式——CasAuthenticationProvider 配置了一个 UserDetailsS​​ervice,它从本地数据库而不是 CAS。

如果你看一下 CAS sample application configuration ,您只需将 userService bean 替换为您自己的实现,该实现从您的应用程序特定的数据库中加载用户信息。

关于java - 来自 CAS 的用户名和来自另一个数据库的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19836480/

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