单点登录代码整理

http://xurichusheng.iteye.com/blog/1866665

参考了 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

Java代码 复制代码 收藏代码
  1. import org.jasig.cas.authentication.handler.DefaultPasswordEncoder;
  2. import org.junit.Test;
  3. public class Test1 {
  4. @Test
  5. public void encode() {
  6. String password= "dylan";
  7. System.out.println(new DefaultPasswordEncoder("MD5").encode(password));
  8. }
  9. }
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));
	}

}

创建表:

Sql代码 复制代码 收藏代码
  1. CREATE TABLE t_user
  2. (
  3. u_id VARCHAR2(36) PRIMARY KEY,
  4. u_name VARCHAR2(20) NOTNULL,
  5. pwd VARCHAR2(50) NOTNULL
  6. );
CREATE TABLE t_user
(
u_id VARCHAR2(36) PRIMARY KEY,
u_name VARCHAR2(20) NOT NULL,
pwd VARCHAR2(50) NOT NULL
);

插入数据:

Sql代码 复制代码 收藏代码
  1. INSERT INTO t_userVALUES(sys_guid(),'dylan','4f97319b308ed6bd3f0c195c176bbd77');
  2. INSERT INTO t_userVALUES(sys_guid(),'admin','21232f297a57a5a743894a0e4a801fc3');
  3. COMMIT;
INSERT INTO t_user VALUES(sys_guid(),'dylan','4f97319b308ed6bd3f0c195c176bbd77');
INSERT INTO t_user VALUES(sys_guid(),'admin','21232f297a57a5a743894a0e4a801fc3');
COMMIT;

退出登录 Filter

Java代码 复制代码 收藏代码
  1. package cas.filter;
  2. import java.io.IOException;
  3. import javax.servlet.Filter;
  4. import javax.servlet.FilterChain;
  5. import javax.servlet.FilterConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletRequest;
  8. import javax.servlet.ServletResponse;
  9. import javax.servlet.http.HttpServletRequest;
  10. public class LogoutFilterimplements Filter {
  11. @Override
  12. public void destroy() {
  13. }
  14. @Override
  15. public void doFilter(ServletRequest req, ServletResponse resp,
  16. FilterChain chain) throws IOException, ServletException {
  17. HttpServletRequest httpRequest = (HttpServletRequest) req;
  18. String user = getCurrentUser(httpRequest);
  19. if (null != user) {
  20. String loginName = (String) httpRequest.getSession().getAttribute(
  21. "User_Info");
  22. httpRequest.getSession().removeAttribute("User_Info");
  23. user = null;
  24. System.out.println("用户'"+loginName+"'退出系统.");
  25. }
  26. chain.doFilter(req, resp);
  27. }
  28. @Override
  29. public void init(FilterConfig arg0)throws ServletException {
  30. }
  31. private String getCurrentUser(HttpServletRequest request) {
  32. return (String) request.getSession().getAttribute("User_Info");
  33. }
  34. }
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
  • 大小: 31.2 KB
  • 大小: 17.8 KB
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值