用cookie实现简单的单点登录功能
看到篇博文,是关于单点登录的。
public class UserFilter implements Filter {private static String loginUrl = "";public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest) request;HttpServletResponse resp = (HttpServletResponse) response;if (isCookieLogined(req)) {chain.doFilter(request, response);} else {String fromUrl = req.getRequestURL().toString();resp.sendRedirect(loginUrl + "?fromUrl=" + fromUrl);}}public void init(FilterConfig filterConfig) throws ServletException {loginUrl = filterConfig.getServletContext().getInitParameter("loginUrl");}private boolean isCookieLogined(HttpServletRequest req) {Cookie[] cookies = req.getCookies();if(cookies!=null){for (Cookie cookie : cookies) {if (cookie.getName().equals("user")&&cookie.getValue()!=null) {//TODO:此处应该调用auth的cookie验证方法return true;}}}return false;}}
登录验证系统的登录代码
public class LoginServlet extends HttpServlet {private static final long serialVersionUID = -8212504322196762878L;private static ConcurrentMap<String, String> userMap = new ConcurrentHashMap<String, String>();public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String fromUrl = request.getParameter("fromUrl");request.setAttribute("fromUrl", fromUrl);request.getRequestDispatcher("index.jsp").forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String user = request.getParameter("user");if(this.isRegister(user)){this.saveCookie(user, response);String fromUrl = request.getParameter("fromUrl");response.sendRedirect(fromUrl);}}@Override/** * 初始化数据 */public void init() throws ServletException {userMap.put("cevin", "cevin");userMap.put("aki", "aki");}private boolean isRegister(String user){if(userMap.get(user)!=null){return true;}return false;}private void saveCookie(String user, HttpServletResponse response){Cookie cookie = new Cookie(CommonUtils.COOKIE_USER, user);cookie.setDomain(getServletContext().getInitParameter("domain"));cookie.setMaxAge(Integer.parseInt(getServletContext().getInitParameter("cookieLife")));cookie.setPath("/");response.addCookie(cookie);}}