`
xurichusheng
  • 浏览: 343947 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

单点登录代码整理

阅读更多

 

参考了 dinguangx  写的6篇文章:

 

1. CAS服务器实验之一: CAS基本概念

 

2. CAS服务器实验之二:CAS Server部署

 

3. CAS服务器实验之三:启用Http协议

 

4. CAS服务器实验之四:单点登录测试

 

5. CAS服务器实验之五:单点退出测试

 

6. CAS服务器实验之六:自定义CAS服务器数据源

 

(这里只是引用了 dinguangx   的文章链接,希望不会造成侵权

 

这里使用的数据库是 oracle 10g2

 

在第四篇文章中,新建的maven工程,使用的maven见附件 apache-maven-3.0.4.rar

 

使用的开发工具是 eclipse-jee-indigo-SR2-win32

需要安装eclipse 的 maven 插件

eclipse中,maven的配置如下:


 

 


 

都按文章中配好之后,需要将maven工程转成web工程:

右键工程名,选择properties,找到 project facets,单击 Convert to faceted Form...

如下图所示,勾选 Dynamic Web Module 和 JavaScript,  我用的是 tomcat 6 的,所以 Dynamic Web Module

选择的是 2.4 



 

点击 Further configuration available..

在弹出的窗口中,将Content directory 的值改成项目中 webroot 的名称,我这里项目跟目录是 webapp



 
 

 

在第六篇文章中,insert 表数据的时候,使用了函数 md5(str),由于oracle并没有这个函数,所以在 insert

语句中的密码需使用 cas 包中的 DefaultPasswordEncoder 进行加密,代码如下:

junit 4

import org.jasig.cas.authentication.handler.DefaultPasswordEncoder;
import org.junit.Test;

public class Test1 {

	@Test
	public void encode() {
		
		String password= "dylan";
		
		System.out.println(new DefaultPasswordEncoder("MD5").encode(password));
	}

}

 

创建表:

CREATE TABLE t_user
(
u_id VARCHAR2(36) PRIMARY KEY,
u_name VARCHAR2(20) NOT NULL,
pwd VARCHAR2(50) NOT NULL
);

 插入数据:

INSERT INTO t_user VALUES(sys_guid(),'dylan','4f97319b308ed6bd3f0c195c176bbd77');
INSERT INTO t_user VALUES(sys_guid(),'admin','21232f297a57a5a743894a0e4a801fc3');
COMMIT;

 

退出登录 Filter

package cas.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class LogoutFilter implements Filter {

	@Override
	public void destroy() {
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest httpRequest = (HttpServletRequest) req;

		String user = getCurrentUser(httpRequest);

		if (null != user) {
			String loginName = (String) httpRequest.getSession().getAttribute(
					"User_Info");
			httpRequest.getSession().removeAttribute("User_Info");
			user = null;
			System.out.println("用户'"+loginName+"'退出系统.");
		}

		chain.doFilter(req, resp);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
	}

	private String getCurrentUser(HttpServletRequest request) {
		return (String) request.getSession().getAttribute("User_Info");
	}
}

 

2个工程 都需要加这个 Filter

 

cas-server 、cas-client1、cas-client2 分别发布在3个不同的tomcat中,记得修改tomcat的端口

 

cas-client1、cas-client2 的代码见附件 cas-client1.rar、cas-client2.rar

 

cas-server  修改后见附件 cas.rar (由于iteye对上传附件大小有限制,这里就不上传jar包了)

 

  • 大小: 28.6 KB
  • 大小: 24.7 KB
  • cas.rar (115.5 KB)
  • 下载次数: 21
  • 大小: 31.2 KB
  • 大小: 17.8 KB
分享到:
评论

相关推荐

    cas单点登录汇总整理.rar

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,...本文档详尽地整理了 CAS 单点登录的各个方面,旨在为开发者提供全面的参考资料。通过实际操作和不断实践,可以更熟练地运用 CAS 实现单点登录功能。

    SSH单元测试代码整理

    SSH框架中的单元测试,尤其是涉及到Hibernate的部分,需要考虑以下关键知识点: 1. **隔离测试**:确保每个测试用例独立运行,不受其他测试影响,避免使用静态变量或全局状态。 2. **数据准备**:在测试前创建所需...

    很实用的js代码整理工具

    "很实用的js代码整理工具" 提供了一种有效管理JS代码的方法,帮助开发者将零散、混乱的代码片段进行有序化整理,提升工作效率。 1. **代码模块化**:JS代码整理的一个关键方面是模块化。通过使用模块,可以将大项目...

    Xcode代码整理

    在进行Xcode代码整理时,除了使用Uncrustify这样的工具,还可以考虑以下几点: 1. **遵循编码规范**:Apple提供了一套名为“Apple Style Guide”的编码规范,包括Objective-C和Swift,建议所有Apple平台的开发者...

    dn_asset:龙之谷资源相关的代码整理-代

    《龙之谷资源相关代码整理详解》 在游戏开发领域,资源管理是至关重要的部分,尤其是在大型游戏如《龙之谷》中。本篇将详细探讨“dn_asset”项目,这是一个针对《龙之谷》资源处理的代码集合,旨在帮助开发者理解和...

    java整理的代码

    ### Java编程知识点解析 #### 知识点一:基本输入输出操作 在Java中,进行基本的输入输出操作主要依赖于`java.util.Scanner`类。此类可以读取用户输入的标准输入、文件中的数据等,并自动根据所用类型进行转换。 ...

    接单的一些代码的汇总.zip

    在IT接单过程中,代码的编写是一项核心工作,可能涉及到以下知识点: 1. **Python编程**:Python是一种高级编程语言,因其简洁的语法和丰富的库支持而被广泛用于Web开发、数据分析、自动化任务和爬虫等领域。这里...

    文件整理基础部分C#代码

    【标题】"文件整理基础部分C#代码"的描述中提到了C#编程语言的应用基础知识,这可能包括了变量声明、数据类型、控制结构(如if语句、for循环、while循环)、函数定义与调用、类与对象、继承、接口、异常处理等核心...

    代码坏味道整理

    标题“代码坏味道整理”指的是在编程过程中,代码可能会出现的一些不良习惯或低效的编程实践,这些被称为“代码坏味道”。这些坏味道通常会使代码难以理解、维护和扩展,降低了软件的质量。为了提高代码可读性和可...

    代码规范整理

    以下是这份代码规范整理的主要知识点: 1. PHP代码格式规范: - 只允许使用长标签`<?php ?>`和短输出式标签`<?= ?>`,避免使用其他格式的标签。 - 所有PHP代码必须使用不带字节顺序标记(BOM)的UTF-8编码格式。 -...

    2020电赛A题代码整理.zip

    【标题】"2020电赛A题代码整理.zip" 涉及的是2020年电子设计大赛(简称“电赛”)的A题解决方案,这是一份包含了参赛者或指导教师整理的代码资源。电赛通常是一项面向大学生的年度竞赛,旨在提升学生的实践能力和...

    S120故障代码,整理完成,可以直接使用

    为了编写程序或进行故障诊断,可以直接从手册中提取这些代码并复制到报警列表中使用,方便快捷地定位故障点,迅速排除故障,恢复设备正常运行。 整理完成的S120故障代码列表,可以作为工程师在进行设备调试和维护时...

    系统代码复审和单元测试报告

    黄苏敏同学负责的企业基本信息管理、企业招聘信息管理和企业级别自动更新模块都经过了复审,以保证以下几点: - 功能完整性:确认代码实现的所有功能符合需求规格。 - 性能优化:检查代码是否有效利用资源,避免...

    ios代码整理-gl

    【标题】"ios代码整理-gl"涉及到的是iOS开发中的Objective-C或Swift编程知识,主要是一些基础且实用的代码片段集合,适用于初学者和团队内部分享,以便于快速理解和应用到项目中。 【描述】"ios 代码 整理 基础版 ...

    FFT-hdl源代码整理

    标题“FFT-hdl源代码整理”表明这是一份关于快速傅里叶变换(FFT)的硬件描述语言(HDL)源代码集合。FFT是一种在数字信号处理领域中广泛使用的算法,用于将时域信号转换为频域信号。HDL则是用于设计数字电子系统的...

    代码美化,整理,统计,工程清理

    2. **代码整理**:代码整理涉及到重构、模块化和逻辑优化。重构是指在不改变代码外在行为的前提下,改进代码的内部结构,提高可读性和可维护性。模块化则是将代码分解为小的、独立的功能单元,便于管理和重用。逻辑...

    虚拟机xen代码整理

    Xen的保存和恢复功能允许虚拟机在不关闭的情况下暂停,然后在稍后的时间点恢复运行。这在迁移、故障恢复或资源调度等场景中非常有用。保存过程涉及将虚拟机的状态(包括内存、CPU寄存器、设备状态等)持久化到存储中...

Global site tag (gtag.js) - Google Analytics