CAS 单点登录【2】自定义用户验证

方案1:CAS默认的JDBC扩展方案:

CAS自带了两种简单的通过JDBC方式验证用户的处理器。

这两个处理类位于cas-server-support-jdbc这个扩展工程下。

第一步:改写用户验证处理器

deployerConfigContext.xml

把他替换成为 下面两种其中任意一个bean皆可。

把对应的用户表名、用户名、密码替换成为 你实际数据库中的 用户表名、用户名、密码对应的字段名称。

第二步:加载驱动(oracle、mysql任选一种),连接数据库

依然在这个文件中deployerConfigContext.xml,在最后一个标签之前,加上下面配置即可(oracle、mysql任选其一)。

第三步:导入必要的jar包

cas-server-webapp的pom.xml

重新启动项目,在登录页验证即可。

方案2:套用原有项目的用户登录逻辑( 非JDBC方式 )

背景:

1.因为是要整合多个项目的登录功能,换句话说,就是原有的项目其实分别都有已经实现的用户登录逻辑页面、登录逻辑,并且是经过了大量测试,程序逻辑比较健壮。
2.原有的项目并不是通过JDBC方式来访问数据库的,为了保持代码风格统一,最好与其他项目保持一致,或者直接套用原有的验证逻辑。(比如:我们项目使用的是Mybatis方式)
3.CAS扩展的JDBC验证方式还是过于简单,对于复杂的验证逻辑不便于扩展。

第一步:自定义一个用户验证处理器

可以在原有的cas-server-support-jdbc工程下,也可以自己新建一个工程

注意:本类要继承这个类 AbstractUsernamePasswordAuthenticationHandler

第二步:自定义异常处理器

因为CAS原有的异常处理逻辑是,只能通过errorcode去messages_zh_CN.properties寻找已经中定义好的异常消息,

如果找不到直接返回errorcode到页面,并不支持直接抛出文字形式的异常消息。还需要为每种异常都定义专属的异常类,例如:

BadCredentialsAuthenticationException.java

BadPasswordAuthenticationException.java

BadUsernameOrPasswordAuthenticationException.java

而本异常类可以直接接受Api抛出的所有异常,或者也可以自定义文字形式的异常消息。如:new Exception(“这是异常消息”)

同样也支持原有的根据errorCode读取异常消息的方式。

第三步:修改deployerConfigContext.xml

方案1中,在配置文件中配置了

JDBC方式的处理器bean、 连接数据库的BasicDataSource bean这里统统不需要。

直接找到这个处理器

把他替换成为自定义的验证处理器。

因为,访问数据库以及验证用户逻辑的处理都在UserApi中做处理,不需要CAS再做处理了。

第四步:pom.xml加载自定义的工程或者被修改的工程jar包

cas-server-webapp的pom.xml

或者用户自定义的项目

Original: https://www.cnblogs.com/java-class/p/8393564.html
Author: Orson
Title: CAS 单点登录【2】自定义用户验证

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536982/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • redis

    Nosql概述 因为数据的访问量越来越大,单靠关系型数据库已经无法支撑用户需求,所以架构也在用户的需求下一步步进行演进。 1、单机Mysql时代 90年代,一个网站的访问量一般不会…

    Java 2023年6月9日
    082
  • 基于Javaweb,Mysql图书管理系统

    一、项目简介 人工管理图书的手续繁索、效率低下给具有强烈时间观念的管理人员带来了诸多不便,学校图书馆缺少一套完善的图书管理软件,为了对图书的管理方便,因此必须开发图书管理系统。 二…

    Java 2023年6月8日
    0109
  • 深度剖析Istio共享代理新模式Ambient Mesh

    摘要:今年9月份,Istio社区宣布Ambient Mesh开源,由此引发国内外众多开发者的热烈讨论。 今年9月份,Istio社区宣布Ambient Mesh开源,由此引发国内外众…

    Java 2023年6月15日
    085
  • q命令-用SQL分析文本文件

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 在Linux上分析文本文件时,一般会使用到grep、sed、awk、sort、uniq等命令,但这些…

    Java 2023年6月7日
    094
  • SpringCloudAlibaba 微服务讲解(二)微服务环境搭建

    我们这次是使用的电商项目的商品、订单、用户为案例进行讲解 2.1 案例准备 maven :3.3.9 数据库:mysql 持久层:SpringData JPA SpringClou…

    Java 2023年6月7日
    0112
  • README

    大家好,这里主要记录一些学习经历,代码过程相关东西。 萌新码农,入职一年,啥都不会,努力学习吧 Original: https://www.cnblogs.com/mrystar/…

    Java 2023年6月8日
    075
  • Day6

    package struct;import com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory;public …

    Java 2023年6月5日
    081
  • 2022-8-17 mysql 第三天

    子查询 按照结果集的行列数不同,子查询可以分为以下几类: 标量子查询:结果集只有一行一列(单行子查询) 列子查询:结果集有一列多行 行子查询:结果集有一行多列 表子查询:结果集多行…

    Java 2023年6月13日
    078
  • Vue编程式路由导航和路由守卫

    具体编码: methods: { pushShow(m) { this.$router.push({ name: ‘msg-d’, // 就是路由的名称,不能使用path para…

    Java 2023年6月13日
    086
  • 八大基本排序

    package sort; import java.util.Arrays; /** * @author 紫英 * @version 1.0 * @di…

    Java 2023年6月5日
    076
  • leetcode 669. Trim a Binary Search Tree 修剪二叉搜索树 (简单)

    一、题目大意 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变…

    Java 2023年6月14日
    084
  • 如何等待ajax完成再执行相应操作

    ajax广泛应用于异步请求,对于大多数业务来说,这是十分方便的,但对于一些特殊的业务,ajax的异步性会起到相反的作用。 例如在ajax请求成功后,后续的操作需要依赖ajax执行成…

    Java 2023年6月6日
    088
  • Java Web:jstl处理字符串

    用法: ${fn:methodName(args….)} 在使用这些函数之前必须在JSP中引入标准函数的声明 <%@ taglib prefix=”fn” uri=”ht…

    Java 2023年5月29日
    088
  • JAVA的Proxy动态代理在自动化测试中的应用

    JAVA的动态代理,在MYBATIS中应用的很广,其核心就是写一个interface,但不写实现类,然后用动态代理来实例化并执行这个interface中的方法,话不多说,来看一个实…

    Java 2023年5月29日
    084
  • 踩坑: 通用mapper tkmybatis 的delete的坑

    今天记录一个使用通用mapper的坑: 在使用 通用mapper delete时 我是这样用的 @Override public int deleteOldData(String …

    Java 2023年6月5日
    084
  • shiro中常用的对象和方法

    一.配置类中常用的对象和方法 1.ShiroFilterFactoryBean()对象:通过创建的该对象调用setSecurityManager方法去关联DefaultWebSec…

    Java 2023年6月9日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球