不同系统使用不同的登陆名和账号,在做cas中心验证 使用数据库验证就比较纠结,因为登录名和密码两边不一样,后来请教大神,两个系统使用相同的登录名,密码可以不一样,然后在cas的
验证db 设置两个系统的数据源只要一个验证通过就把用户信息放到seession,完成登陆。
参考:https://github.com/coder-huang/sso-shiro-cas
deployerConfigContext.xml
<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
<entry key-ref="primaryAuthenticationHandler1" value-ref="primaryPrincipalResolver1" />
<!-- 通过数据库验证身份, hr 人事系统的登陆 -->
<bean id="primaryAuthenticationHandler"
class="com.distinct.cas.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource"
p:passwordEncoder-ref="passwordEncoder"
p:sql="select usr_pwd from users where Usr_LoginID=?" />
<!-- 通过数据库验证身份,培训 系统的登陆 -->
<bean id="primaryAuthenticationHandler1"
class="com.distinct.cas.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource1"
p:passwordEncoder-ref="passwordEncoder"
p:sql="select usr_pwd from users where Usr_LoginID=? " />
<!-- 设置数据源hr -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127:3306/db_hr?useUnicode=true&characterEncoding=utf8"></property>
<property name="username" value="db_hr_user"></property>
<property name="password" value="123456"></property>
</bean>
<!-- 设置数据源traning -->
<bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://128:3306/db_training?useUnicode=true&characterEncoding=utf8"></property>
<property name="username" value="db_trainning"></property>
<property name="password" value="123456"></property>
</bean>
UserRealm.java
/**
* 1、CAS认证 ,验证用户身份,培训系统 和 hr 系统采用相同的登录名,进行关联
* 2、将用户基本信息设置到会话中
*/
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) {
AuthenticationInfo authc = super.doGetAuthenticationInfo(token);
String account = (String) authc.getPrincipals().getPrimaryPrincipal();
User user = this.loginDao.getUser(account);
if(user!=null){
List<UserResource> userResources=this.loginDao.getAllMenusByUser(user);
SecurityUtils.getSubject().getSession().setAttribute(Constants.USER_RESOURCE, userResources);
}
SecurityUtils.getSubject().getSession().setAttribute(Constants.SESSION_USER, user);
return authc;
}
分享到:
相关推荐
cas 结合 springmvc shiro 做项目单点登录包括cas服务端,cas客户端。shiro-cas集成项目
spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...
分析shiro框架+cas单点登录系统的技术分析,解析了相关的技术难点
spring+springmvc+shiro+cas单点登录实例 springmvc+spring+shiro+cas单点登录实例 加入了登录验证码认证,修改了下首页样式,不过样式没有弄好,很丑的,有空自己再弄下 说明:cas-server是单点登录服务端,用的是...
shiro+cas实现单点登录 示例代码,送源码分析url:http://note.youdao.com/noteshare?id=a83380ee8fc6913162042e865689844e&sub=CD905CCCE4134A159326DC2DFC1AF268
包含单点登录tomcat部署,cas服务器部署,项目demo,可更好的理解sso-cas登录
spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次
cas 结合 springmvc shiro 做项目单点认证
CAS与权限管理框架Shiro集成
spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制.docx,这是一份CAS单点登录的技术文档
cas+ springmvc + shiro实现单点登录
cas客户端集成单点登录代码登录登出cas客户端集成单点登录代码登录登出cas客户端集成单点登录代码登录登出cas客户端集成单点登录代码登录登出cas客户端集成单点登录代码登录登出
主要介绍了spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制,需要的朋友可以参考下
cas单点登录结合shiro CAS 使用4.1.10 cas-server-webapp里deployerConfigContext.xml添加下列代码 自定义数据库查询用户名密码比对 添加pom依赖 <groupId>org.jasig.cas <artifactId>cas-server-support-jdbc ...
spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次。代码中配有一个word文档,用来配置及启动项目。
内置jar包 和源码包 使用说明 学习连接 对决真实例子 部署到tomcat中即可使用 初学者来把 这东西网上例子太少了 而且还没有实例 大家不要谢我 我叫雷锋
1.如果客户端项目采用shiro控制权限 则需要将cas-client 认证过滤交给shiro来管理 2.从shiro下载相应版本的shiro-cas-xxxx. Jar或者在maven里直接添加
关于shiro + CAS + Spring中怎么把CAS.xml和shiro.xml连接起来
CAS 是 Central Authentication Service 的缩写 —— 中央认证服务,一种独立开放指令协议,是 Yale 大学发起的一个企业级开源项目,旨在为 Web 应用系统提供一种可靠的 SSO 解决方案。 CAS 支持以下特性: CAS v1, ...
CAS单点登出问题及解决 二 (文章摘自笔者发在自己公司内部论坛的文章:谢绝转载)