java ssh 单点登录 拦截器
来源:互联网 发布:java填空题 编辑:程序博客网 时间:2024/06/06 18:30
1、登录拦截器类
package cn.com.cardinfo.merchantlink.protal.filter;import java.io.IOException;import javax.servlet.*;import javax.servlet.http.*;import cn.com.cardinfo.merchantlink.globlevar.GlobleVarClass;public class LoginFilter implements Filter {public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubHttpServletRequest httprequest = (HttpServletRequest) request;HttpServletResponse httpresponse = (HttpServletResponse) response;HttpSession session = httprequest.getSession();Cookie[] cs = httprequest.getCookies();String path = httprequest.getRequestURI();if (path.endsWith("/LoginPage.jsp")||path.endsWith("/RegisterPage.jsp")) {chain.doFilter(httprequest, httpresponse);} else {boolean isok = false;if (session.getAttribute("loginname") != null) {//HttpSession sess = (HttpSession) GlobleVarClass.SESSTIONLIST.get(session.getAttribute("loginname"));//if (sess.getId().equals(session.getId())) {isok = true;//}}/*else {if (cs != null) {String loginname = null;String password = null;String sessionid = null;for (Cookie c : cs) {if ("loginname".equals(c.getName())) {loginname = c.getValue();} else if ("password".equals(c.getName())) {password = c.getValue();} else if ("seesionid".equals(c.getName())) {sessionid = c.getValue();}}if (loginname != null && password != null&& sessionid != null) {HttpSession sess = (HttpSession) GlobleVarClass.SESSTIONLIST.get(loginname);if (sess != null) {if (sess.getId() == sessionid) {session.setAttribute("loginname", loginname);session.setAttribute("password", password);// GlobleVarClass.SESSTIONLIST.put(loginname,// session);isok = true;}}}}}*/if (isok) {chain.doFilter(httprequest, httpresponse);} else {session.setAttribute("preurl", httprequest.getRequestURI());httpresponse.sendRedirect("../portal/webcontent/LoginPage.jsp");}}}public void init(FilterConfig config) throws ServletException {// TODO Auto-generated method stub}}
2、web.xml配置文件
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app> <display-name>Archetype Created Web Application</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>LoginFilter</filter-name> <filter-class>cn.com.cardinfo.merchantlink.protal.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 需要? --> <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> <!--contextConfigLocation在 ContextLoaderListener类中的默认值是 /WEB-INF/applicationContext.xml--><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value> <!--<param-value>classpath:applicationContext.xml</param-value> --></context-param> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list></web-app>
这样就会过滤所有的页面了,然后配合session 的使用,就可以单点登录了
package cn.com.cardinfo.merchantlink.protal.PageAction;import java.io.IOException;import java.io.PrintWriter;import java.util.Map;import javax.servlet.http.*;import org.apache.struts2.ServletActionContext;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import cn.com.cardinfo.merchantlink.entity.UserEntity;import cn.com.cardinfo.merchantlink.globlevar.GlobleVarClass;import cn.com.cardinfo.merchantlink.service.iservice.IUserService;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;@Controllerpublic class UserLoginAction extends ActionSupport {private String loginname;@Autowiredprivate IUserService<UserEntity> UserServiceCase;private String nickname;public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getLoginname() {return loginname;}public void setLoginname(String loginname) {this.loginname = loginname;}private String isauto = "off";/* * private String username; * * public String getUsername() { return username; } * * public void setUsername(String username) { this.username = username; } */public String getIsauto() {return isauto;}public void setIsauto(String isauto) {this.isauto = isauto;}private String password;public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String execute() throws Exception {HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();//HttpServletResponse response=(HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);nickname = UserServiceCase.loginUser(loginname, password);System.out.println(isauto);System.out.println(nickname);if (nickname != null) {setcands(request, response, nickname);response.sendRedirect("../index.jsp");return SUCCESS;} else {nickname = null;return ERROR;}}@Overridepublic void validate() {if ("".equals(loginname)) {addFieldError("loginname", "用户密码不能为空");}if ("".equals(password)) {addFieldError("password", "密码不能为空!");}}private void setcands(HttpServletRequest requestnew,HttpServletResponse responsenew, String nickname) {HttpSession session = requestnew.getSession();session.setAttribute("loginname", loginname);session.setAttribute("password", password);session.setAttribute("nickname", nickname);HttpSession presession = (HttpSession) GlobleVarClass.SESSTIONLIST.get(loginname);//checkCookie(requestnew, responsenew, nickname);if (presession != null) {if (presession.getId() != session.getId()) {GlobleVarClass.SESSTIONLIST.remove(loginname);presession.invalidate();GlobleVarClass.SESSTIONLIST.put(loginname, session);}} else {GlobleVarClass.SESSTIONLIST.put(loginname, session);/* * if(isauto.equals("on")) { Cookie cid = new Cookie("sessionid", * session.getId()); //cid.setDomain(pattern); Cookie cuser = new * Cookie("loginname", loginname); Cookie cpw = new * Cookie("password", password); cid.setMaxAge(savetime); * cpw.setMaxAge(savetime); cuser.setMaxAge(savetime); * responsenew.addCookie(cid); responsenew.addCookie(cpw); * responsenew.addCookie(cuser); } else if(isauto.equals("off")) { * Cookie[] cs= requestnew.getCookies(); for (Cookie c : cs) { if * ("loginname".equals(c.getName())) { c.setMaxAge(0); } else if * ("password".equals(c.getName())) { c.setMaxAge(0); } else if * ("seesionid".equals(c.getName())) { c.setMaxAge(0); } } } */// request.getSession().getId();// application s22;}}private void checkCookie(HttpServletRequest Crequestnew,HttpServletResponse Cresponsenew, String Cnickname) {int savetime = 36000000;HttpSession session = Crequestnew.getSession();if (isauto.equals("on")) {Cookie cid = new Cookie("sessionid", session.getId());// cid.setDomain(pattern);Cookie cuser = new Cookie("loginname", loginname);Cookie cpw = new Cookie("password", password);cid.setMaxAge(savetime);cpw.setMaxAge(savetime);cuser.setMaxAge(savetime);Cresponsenew.addCookie(cid);Cresponsenew.addCookie(cpw);Cresponsenew.addCookie(cuser);} else if (isauto.equals("off")) {Cookie[] cs = Crequestnew.getCookies();for (Cookie c : cs) {if ("loginname".equals(c.getName())) {c.setMaxAge(0);Cresponsenew.addCookie(c);} else if ("password".equals(c.getName())) {c.setMaxAge(0);Cresponsenew.addCookie(c);} else if ("sessionid".equals(c.getName())) {c.setMaxAge(0);Cresponsenew.addCookie(c);}}}}public String executeReg() {HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();GlobleVarClass.SESSTIONLIST.remove(session.getAttribute("loginname"));session.invalidate();return NONE;}public String loginJump() throws IOException{HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();HttpServletResponse response = ServletActionContext.getResponse();boolean b=true;boolean islogin=false;b=session.isNew();if(b==false){if(session.getAttribute("loginname")!=null&&!session.getAttribute("loginname").toString().equals("")){islogin=true;}}if(islogin==true){response.setCharacterEncoding("UTF_8");//设置Response的编码方式为UTF-8 response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8,其实设置了本句,也默认设置了Response的编码方式为UTF-8,但是开发中最好两句结合起来使用 //response.setContentType("text/html;charset=UTF-8");同上句代码作用一样 PrintWriter writer = response.getWriter(); writer.write("true");}else{response.setCharacterEncoding("UTF_8");//设置Response的编码方式为UTF-8 response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8,其实设置了本句,也默认设置了Response的编码方式为UTF-8,但是开发中最好两句结合起来使用 //response.setContentType("text/html;charset=UTF-8");同上句代码作用一样 PrintWriter writer = response.getWriter(); writer.write("false");}return NONE;}}
这里还可以再次晋级就是因为session是服务端存储,可以和客户端存储的cookie配合起来使用,这样就可以做出保存登录状态这样的功能了
0 0
- java ssh 单点登录 拦截器
- SSH登录拦截器1
- ssh登录拦截器配置
- SSH 登录拦截器(过滤器)!
- sso单点登录--拦截器篇
- java登录拦截器
- 【SSH (五)】登录权限 拦截器
- 【ssh】struts2 拦截器详解,登录拦截案例
- web单点登录中的拦截器和过滤器使用
- java实现单点登录
- Java单点登录
- Java单点登录
- java实现单点登录
- java之单点登录
- java web 单点登录
- java的单点登录
- java实现单点登录
- java实现单点登录
- C#的数据类型之值类型
- JAVA中的IO简介2
- Implementation codes of Data Structures and Algorithm Analysis in C (1)
- android实现返回后,刷新Activity
- 图像处理之高斯一阶及二阶导数计算
- java ssh 单点登录 拦截器
- 在Ubuntu14.04中添加Windows风格的底部任务栏
- poj 2031 Building a Space Station
- 第一章计算机系统概述
- MyBatis入门指南
- 15个使用频率极高的基础算法题(附完整代码)
- ets结合record的增删改查操作
- QT 打开文件对话框总结
- SSU 479.Funny Feature