http://xurichusheng.iteye.com/blog/1866665
参考了 dinguangx 写的6篇文章:
(这里只是引用了 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));
- }
- }
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) NOTNULL,
- pwd VARCHAR2(50) NOTNULL
- );
CREATE TABLE t_user
(
u_id VARCHAR2(36) PRIMARY KEY,
u_name VARCHAR2(20) NOT NULL,
pwd VARCHAR2(50) NOT NULL
);
插入数据:
- INSERT INTO t_userVALUES(sys_guid(),'dylan','4f97319b308ed6bd3f0c195c176bbd77');
- INSERT INTO t_userVALUES(sys_guid(),'admin','21232f297a57a5a743894a0e4a801fc3');
- COMMIT;
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 LogoutFilterimplements 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");
- }
- }
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包了)