CAS单点登录——使用自定义登录页面和数据源

使用CAS服务实现单点登录时,登录用的用户名和密码是通过在cas/WEB-INF下的cas-servlet.xml文件进行配置的,实际应用中,我们需要查询自己的数据库,来实现登录功能。

在cas中配置自定义数据源
  1. 修改cas服务端中web-inf下deployerConfigContext.xml ,添加如下配置


  
  


	
	



  1. 在deployerConfigContext.xml中找到如下配置

	
		
			
			
		
	
	
		
	

这段配置中 entry key-ref=“primaryAuthenticationHandler” value-ref="primaryPrincipalResolver"这一句的表示使用自己配置的用户名和密码登录cas,而需要使用数据库认证用户名和密码,则需要将这句注释,添加一个配置,使用自定义的数据源,修改后如下


      
            
            		
						
       
 
  1. 因为配置数据源,需要c3p0和masql的驱动包,所以需要将这些jar包加入到webapps\cas\WEB-INF\lib目录下,jar包地址:
    链接:https://pan.baidu.com/s/1LzEb-wtH7YCO8MdQw4q7bA 提取码:lc1n
    三个jar包在里面的jar目录下

至此,就可以在登录的时候,使用自己数据库中tb_user表中的用户名和密码进行登录了,而原来配置的默认的用户名和密码也就无效了。

当我们使用cas来进行登录时,会默认使用它的登录页面,但是与我们自己的系统风格不一致,也没有那么美观,所以,这里需要将自己的登录页面,成为cas服务的登录页面

修改cas服务端的登录界面
  1. 将自己登录页面,拷贝到cas系统下WEB-INF\view\jsp\default\ui 目录下,将css,js,images等文件夹拷贝到 cas目录下,将原来的casLoginView.jsp 改名(可以为之后的修改操作做参照),将自己的login.html改名为casLoginView.jsp 。
  2. 因为自己的登录页面改成了jsp页面,所以需要加入jsp的头信息,因为原来的登录界面,引入了includes下的top.jsp界面,所以,我们只需要将top.jsp里面的jsp头信息,加入到新的casLoginView.jsp 中即可
<%@ page pageEncoding="UTF-8" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  1. 将自己的登录页面里面的form标签,input标签,登录标签都修改成原来的casLoginView.jsp页面里面的格式,因为要套用cas的内核。但是,这些标签的样式,还是需要用自己的。这里,还需要将原来的casLoginView.jsp中的三个隐藏域,也要复制过来



  1. 都修改好之后,运行,就能使用自己的登录界面,并且使用自己数据库的用户名和密码登录成功。

当我们登录的时候,输入错误的用户名和密码时,不会有错误提示,所以,需要将cas的错误提示加入进去

加入错误提示
  1. 在表单内加入错误提示框(位置可以由自己决定)
  
  1. 输入错误的用户名和密码,提示是英文。这个提示信息是在WEB-INF\classes目录下的messages.properties文件中
authenticationFailure.AccountNotFoundException=Invalid credentials.
authenticationFailure.FailedLoginException=Invalid credentials.
  1. 需要将错误提示改成中文,所以修改cas-servlet.xm

p:defaultLocale="zh_CN"这里默认配置的是en,表示英文,这里要改成zh_CN,表示简体中文

  1. 在WEB-INF\classes目录下,找到messages_zh_CN.properties,加入配置
authenticationFailure.AccountNotFoundException=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF.
authenticationFailure.FailedLoginException=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF.

这里需要加入中文的转码,系统才能识别,这里的转码含义是:用户名或密码不存在,如果需要其他的错误提示,可以修改,但是一定要是中文转码。

  1. 都修改之后,再次登录输入错误的信息,就能在登录页面看到:用户名或密码错误的提示信息。

你可能感兴趣的:(CAS)