由于每个版本的改动较大,所以先把版本号列出:

  服务端版本:cas server 4.0.0

  客户端版本:cas client 3.3.3

一、自定义登录页面

  页面路径:/WebContent/WEB-INF/view/jsp/default/ui/casLoginView.jsp

  在定义登录页面的时候,记住include cas自带的两个页面,不能少:

/WebContent/WEB-INF/view/jsp/default/ui/includes/bottom.jsp

/WebContent/WEB-INF/view/jsp/default/ui/includes/top.jsp

  注意以下核心代码的替换,其余的依葫芦画瓢:

<div class="fl con">
<div class="login_wrap">
<h1>中央登陆系统</h1>
<div class="login">
<form:form method="post" id="fm1" commandName="${commandName}" htmlEscape="true"> <div class="clearfix mb15">
<label for="account" class="fl">登录名:</label><input type="text" name="username" id="username" class="fl" required="true" />
</div>
<div class="clearfix mb15">
<label for="psd" class="fl">登录密码</label><input type="password" id="password" name="password" class="fl" required="true" />
</div>
<div class="clearfix lastline">
<span class="fl mt10"><input type="checkbox" class="check"><em>记住登录名</em></span> <input class="btn fl" name="submit" value="登陆" accesskey="l" tabindex="4" type="submit" />
</div>
<form:errors path="*" id="msg" cssClass="errors" element="div" htmlEscape="false" />
<h1><spring:message code="screen.welcome.instructions" /></h1>
<br />
<div id="loadInfo" style="color: #ffffff"></div>
<div id="loginRslt" style="color: red"></div>
<input type="hidden" name="lt" value="${loginTicket}" />
<input type="hidden" name="execution" value="${flowExecutionKey}" />
<input type="hidden" name="_eventId" value="submit" />
<!-- <input class="btn fl" name="submit" accesskey="l" tabindex="4" type="submit" /> -->
</form:form>
</div>
</div>
</div>

  标红的,在后台获取的时候必须写法保证一致!

二、自定义登录流程

  step1:由于cas在deployerConfigContext.xml中默认配置固定登录方式(用户名:casuser  密码:Mellon),所以第一步先注释如下代码:

 <bean id="primaryAuthenticationHandler"
class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<!-- <property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
-->
</bean>

  step2:自定义认证类,此类继承AbstractUsernamePasswordAuthenticationHandler,重写authenticateUsernamePasswordInternal方法:

@Override
protected final HandlerResult authenticateUsernamePasswordInternal(
final UsernamePasswordCredential credential) throws GeneralSecurityException,
PreventedException {
// TODO Auto-generated method stub
//表单录入数据
final String userName = credential.getUsername();
final String password = credential.getPassword();
User u = new User();
u.setUserName(userName);
u.setPassword(MD5.getMD5(password));
boolean flag = dbService.checkAuth(u);
if (flag) {
return createHandlerResult(credential, new SimplePrincipal(userName), null);
}else if (adService.check(userName,password)) {
u = adService.GetADInfo(userName);
dbService.addUser(u);
return createHandlerResult(credential, new SimplePrincipal(userName), null);
}else {
throw new FailedLoginException("");
}
}

  自定义认证,还可以直接在deployerConfigContext.xml配置database,配置用户验证的sql。网上资料丰富,暂且不表。

  类编写完之后,注意将deployerConfigContext.xml配置的验证bean的类路径修改为你自定义的认证类:

 <bean id="primaryAuthenticationHandler"
class="xx.xx.xx">
<!-- <property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
-->
</bean>

三、自定义登录提示

  提示信息在/src/messages.properties配置,以下是验证失败之后,可以提示内容的配置:

# Authentication failure messages
authenticationFailure.AccountDisabledException=This account has been disabled.
authenticationFailure.AccountLockedException=This account has been locked.
authenticationFailure.CredentialExpiredException=Your password has expired.
authenticationFailure.InvalidLoginLocationException=You cannot login from this workstation.
authenticationFailure.InvalidLoginTimeException=Your account is forbidden to login at this time.
authenticationFailure.AccountNotFoundException=Invalid credentials.
authenticationFailure.FailedLoginException=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF.
authenticationFailure.UNKNOWN=Invalid credentials.

CAS实战の自定义登录的更多相关文章

  1. CAS实战の自定义注销

    步骤一 在cas server端,设置/WebContent/WEB-INF/cas-servlet.xml: <bean id="logoutAction" class=& ...

  2. CAS4.0.4 之自定义登录页实践

    因最近公司要用到cas登陆而且要使用自定登陆页面,网络上搜索了一下cas自定义登陆,比较好的两篇文章CAS 之自定义登录页实践和CAS 之 跨域 Ajax 登录实践,感觉写的不错,但是发现改动的地方很 ...

  3. CAS自定义登录验证方法

    一.CAS登录认证原理 CAS认证流程如下图: CAS服务器的org.jasig.cas.authentication.AuthenticationManager负责基于提供的凭证信息进行用户认证.与 ...

  4. cas sso单点登录系列3_cas-server端配置认证方式实践(数据源+自定义java类认证)

    转:http://blog.csdn.net/ae6623/article/details/8851801 本篇将讲解cas-server端的认证方式 1.最简单的认证,用户名和密码一致就登录成功 2 ...

  5. CAS 4.0.x 自定义登录页面

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] CAS默认登录页面 复制一个新的页面管理页面 修改页面引用 修改casproperties 修改casLoginViewjs ...

  6. (四)SSO之CAS框架单点登录,自定义验证登录方式

    应需求的变化,在登录cas的时候,默认根据用户名和密码进行验证,如果加上用户名,密码和一个系统标识进行验证呢?该如何做呢? 我们知道cas默认的登录界面中,输入的用户名和密码,再配置一下deploye ...

  7. 基于CAS的单点登录实战(2)-- 搭建cas的php客户端

    在这之前已经搭好了CAS服务端 基于CAS的单点登录实战(1)-- 搭建cas服务器 PHP-Client php-Client是官方支持的,去官网下个最新版就好了.phpCAS 接入很简单,解压放到 ...

  8. cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析

    转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...

  9. CAS实现单点登录

    1.简介 SSO单点登录 在多个相互信任的系统中,用户只需要登录一次就可以访问其他受信任的系统. 新浪微博与新浪博客是相互信任的应用系统. *当用户首次访问新浪微博时,新浪微博识别到用户未登录,将请求 ...

随机推荐

  1. 关于RouterOS 国内DDNS服务

    虽然RouterOS 加入了cloud功能,但最近在配置RB2011的时候发现不好使,更新域名后无法正确解析到我的IP地址,虽然在cloud的public address中显示了正确的公网ip地址,但 ...

  2. HTTP代理器Fiddler(三)

    HTTP代理神器Fiddler Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP请求. Fiddler启动的时候,默认IE的代理设为了127.0.0.1:8888,而其他浏 ...

  3. mysql统计一个库里面的表的总数

    SELECT COUNT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA = 'weixin_platform' weixi ...

  4. python学习-day 1

    Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...

  5. c#,读取二维码

    /// <summary>/// 读取二维码/// 读取失败,返回空字符串/// </summary>/// <param name="filename&quo ...

  6. MySQL 常用命令行

    增加新用户 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码" 如,增加一个用户user1密码为password1,让其可以在本 ...

  7. http://www.5xcg.com/bbs/forum.php?mod=viewthread&tid=51143&extra=page%3D1

    http://www.5xcg.com/bbs/forum.php?mod=viewthread&tid=51143&extra=page%3D1 因为身在酒店设备有限,只能尽量把文字 ...

  8. cas 退出后跳转指定页面

    退出连接 https://localhost:8888/cas/logout?service=https://localhost:8080/cas-client/login 修改cas-server配 ...

  9. 如何去掉UItableview headerview黏性

    有时候使用UITableView所实现的列表,会使用到header view,但是又不希望它粘在最顶上而是跟随滚动而消失或者出现,下面的代码片段就是实现此功能 sectionHeaderHeight ...

  10. Memcached在Linux环境下的使用详解http://blog.51cto.com/soysauce93/1737161

    大纲 一.什么是memcached 二.memcached特性 三.memcached存储方式 四.memcached安装与配置 五.memcached结合php 六.Nginx整合memcached ...