先说多种方式登录的问题,这里使用手机号码和用户名

百度了半天网上能找到的办法都试了,似乎都不好使,要不就是需要修改源码

经过反复查看cas4.0源码,发现可以配置多个身份认证器,而且可以配置多个身份认证器的策略,这里用org.jasig.cas.authentication.AnyAuthenticationPolicy,即任何一个认证器通过就算通过。
这就好办多了,一切问题都好解决,废话不多说,直接上代码

下面是deployerConfigContext.xml

增加一个身份认证器

<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager"><constructor-arg><map><entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" /><entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" /><!--新增的认证器 注意key不能重复,并且key是一个bean--><entry key-ref="secondaryAuthenticationHandler" value-ref="secondaryPrincipalResolver" /></map></constructor-arg>
<!--多个认证器的认证策略--><property name="authenticationPolicy"><bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" /></property>
</bean><bean id="primaryPrincipalResolver"class="org.jasig.cas.authentication.principal.PersonDirectoryPrincipalResolver" ><property name="attributeRepository" ref="attributeRepository" />
</bean>
<!--新增的身份认处理器-->
<bean id="secondaryPrincipalResolver"class="org.jasig.cas.authentication.principal.PersonDirectoryPrincipalResolver" ><property name="attributeRepository" ref="attributeRepository2" />
</bean><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_INFO where {0}"/><property name="queryAttributeMapping"><map><!--这里的key需写username,value对应数据库字段--><!--客户端获取信息的时候带过来的用户身份标识对应的用户uid--><entry key="username" value="USERNAME"/></map></property><property name="queryType"><value>OR</value></property><property name="resultAttributeMapping"><map><!--key为对应的数据库字段名称,value为提供给客户端获取的属性名字,系统会自动填充值--><entry key="USERID" value="userId"/><entry key="MOBILE" value="mobile"/></map></property>
</bean>
<bean id="attributeRepository2" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao"><constructor-arg index="0" ref="dataSource"/><constructor-arg index="1" value="select * from USER_INFO where {0}"/><property name="queryAttributeMapping"><map><!--这里的key需写username,value对应数据库字段--><!--客户端获取信息的时候带过来的用户身份标识对应的用户uid--><entry key="username" value="MOBILE"/></map></property><property name="queryType"><value>OR</value></property><property name="resultAttributeMapping"><map><!--key为对应的数据库字段名称,value为提供给客户端获取的属性名字,系统会自动填充值--><entry key="USERID" value="userId"/><entry key="USERTEL" value="userTel"/></map></property>
</bean><bean id="primaryAuthenticationHandler"class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"p:dataSource-ref="dataSource"p:passwordEncoder-ref="ignoreCasePasswordEncoder"p:sql="select USERPASSWORD from USER_INFO where USERNAME=?" />
<bean id="secondaryAuthenticationHandler"class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"p:dataSource-ref="dataSource"p:passwordEncoder-ref="ignoreCasePasswordEncoder"p:sql="select USERPASSWORD from USER_INFO where MOBILE=?" />

到这里就搞定了手机号码/用户名登录的问题,然而,又出现了个问题,这里查询了两次数据库登录时间有所延长,报了个错如下:

Cannot create a session after the response has been committed

继续百度,有人遇到过,是因为坑爹的cas在登录后两秒把session给end了,导致session获取不到,解决办法是在cas-servlet.xml 配置timeToDieInSeconds这个值
把时间设置长一些就好了

<bean id="terminateWebSessionListener" class="org.jasig.cas.web.flow.TerminateWebSessionListener"p:timeToDieInSeconds="60"/>

cas4.0实现多种方式邮箱/手机号码登录及认证相关推荐

  1. zju网页的自动登录和认证

    无线认证登录 学校无线采用的是认证登陆的方式,但是登录无线认证需要打开浏览器,有时候网页很难跳转,所以希望找到一种能够快速的登录的方式.最近自学python,发现requests模块可以达到这个目的, ...

  2. 【项目】多种方式统一登录入口的设计方案

    在编写项目的时候,通常会遇到很多情况下,需要实现统一登录入口.统一登录入口通常指的是:能够实现手机号.邮箱.用户名等信息登录,且共用一个登录入口. 这种登录方式现在属于一种主流的登录方式,除此之外,移 ...

  3. QQ空间及邮箱验证码登录的校验方式及自动登录的解决方案

    目前有很多的SNS社区或类SNS的网站,例如开心.51.校内等,但是发现大多数社区在邀请好友的时候都没有提供对QQ邮箱或者QQ空间好友列表获取的功能,不过似乎海内支持,但是网上相关QQ的文章还不是很多 ...

  4. 苹果邮箱怎么登录qq邮箱_qq邮箱app下载安装-手机QQ邮箱2020下载v6.1.0 官方安卓版...

    手机qq邮箱2020是一款网络通讯类软件应用.已经是许多人的首选邮箱应用,与qq相连,自己的联系人都可以发送邮件.更新后功能也更丰富更实用,帮你快速处理工作生活各类大小事件.感兴趣的用户欢迎来当易网下 ...

  5. 数据库用户表结构设计-多种注册方式含第三方登录

    传统互联网已经过渡到移动互联网的时代,我们在开发android.ios.小程序等的时候,客户端的注册方式已经非常的丰富多样.所以,后台的用户表的设计也需要适应不同注册方式「不断扩张」及「相互绑定」的情 ...

  6. 2、cas4.0 单点登录 之 cas-client

    cas4.0 单点登录 之 cas-client cas4.0 单点登录 之 https证书 已经做好了证书的准备工作,现在结合cas-server来配置单点登录: 一.安装cas服务端(cas-se ...

  7. 斐波那契数列python递归 0、1、1、2、3_python实现斐波那契数列的多种方式

    正文共: 3269字 8图 预计阅读时间: 9分钟 每日分享 The great pleasure in life is doing what people say you cannot do. 人生 ...

  8. 怎么登录163vip邮箱,登录方式有哪些?

    刚刚毕业,进入公司后都是用的客户端登录邮箱.上班来的有点晚,主管着急要个文件,没有办法客户端登录便对主管说:您打开我的电脑我告诉您在哪儿可以吗?主管:我们使用的Tom 163 vip 邮箱客户端.网页 ...

  9. html5+ mui框架 微信授权登录跳出手机号码登录方式

    2019独角兽企业重金招聘Python工程师标准>>> 在HBuilder真机运行微信授权登录成功,但是使用ios离线集成后,点击微信授权登录,会跳出微信手机号码登录方式(会让你填入 ...

最新文章

  1. linux shell下获取cpu温度
  2. 我在兰亭这三年之跳出率升高门
  3. MySQL 5.7最新版本的2个bug
  4. postgres 显示变量_sql - 如何在PostgreSQL查询中声明变量
  5. [转]过度情绪化心智模式的10大特征——看看你有几个?
  6. CodeVS 1576 最长严格上升子序列 (DP)
  7. doc转换html软件,Doc文件格式转换工具(CoolUtils Total Doc Converter)
  8. Android 销毁当前页面
  9. 安防摄像头WEB端直播,实现按需播放,节省带宽和服务器压力
  10. 集算器(仓库版)发布,黑科技获得用户好评
  11. vb 6.0 常用工具(鼠标移动,代码补全,代码对齐)
  12. vscode无法更改文件夹名称
  13. 行为树(Behavior trees)
  14. NXP智能车竞赛笔记(室外电磁组)
  15. java bitset javadoc_Java数据结构: java.util.BitSet源码学习
  16. linux获取软电话信息,完整的SIP软电话工程实施过程
  17. C语言实现文件的加密解密
  18. 服务器减少一半,TDengine在华自科技的落地实践
  19. 在ICT求学时最大的痕迹
  20. 第四章 python中的循环结构

热门文章

  1. 简单的html图片上传工具
  2. 新华三网络部署(和思科的区别)
  3. 电机控制器功率电路MOS管及驱动芯片选型若干问题总结
  4. 前端类库开发最佳实践
  5. 经过离散点画平滑曲线(贝塞尔3次)
  6. 像人类大脑一样思考 ,“袋鼠云防汛大脑”让防汛更智慧
  7. typora免费版,无需破解,安装直接使用
  8. linux mysql dengl_交作业了!哈哈-·
  9. 服务式办公室相对于传统办公室有什么不同,服务式办公室的概念
  10. vue 点击动态展示不同的图片