cookie自动登录

今天自己看了一下cookie 然后 做了一个小总结:

cookie 自动登录的实现原理 : 就是当你在登陆的时候 把 用户账号和密码放到cookie中 ,第二次登录直接判断cookie中是否有  用户账号和密码 有的话就直接跳过登录 直接进入视图页面  没有的话就进入登录页面

1. 在登录方法中 将获取到的用户和密码放到cookie中  :

boolean exist = isExist(request);

 if (!exist) {
request.getSession().setAttribute("user", user);
//放入cookie
Cookie cookie1 = new Cookie("userName",username);
cookie1.setMaxAge(24 * 3600);  //设置存放时长
response.addCookie(cookie1);
Cookie cookie2 = new Cookie("password",password);
cookie2.setMaxAge(24 * 3600); //设置存放时长
response.addCookie(cookie2);

}

   return "redirect:f.action";

这里用到了方法 isExist 是为了验证里面是否存在用户名和密码


/**
* 判断cookie 里面是否存在用户名和密码
* @return
*/
public boolean isExist(HttpServletRequest request) {
// 不存在的
boolean flag = false;
Cookie[] cs = request.getCookies();
int count = 0;// 记录比较次数
if (cs!=null) {
for (Cookie c : cs) {
if (c.getName().equals("userName")) {
count++;
}
if (c.getName().equals("password")) {
count++;
}
}
}
if(count==2) {
flag = true;
}
return flag ;
}



/**
 * 获取cookie
 * @return
 */

public String[] getCookie(HttpServletRequest request) {
String[] strs = new String[2];
Cookie[] cs = request.getCookies();
if (cs!=null) {
for (Cookie c : cs) {
if (c.getName().equals("userName")) {
// 获取账号
strs[0] = c.getValue();
}
if (c.getName().equals("password")) {
// 获取密码
strs[1] = c.getValue();
}
}
}
return strs;
}


/*********************************************************************************************************************/

将cookie中的账户和密码 放入request域中 :
@RequestMapping("/index")
public String index(HttpServletRequest request) {
String[] cookie = getCookie(request);
if (cookie.length==2) {
request.setAttribute("userName", cookie[0]);
request.setAttribute("password", cookie[1]);
}
return "index";
}

/**
* cookie专用方法,进入视图页面的方法
* @return
*/
@RequestMapping("/f.action")
public String ff() {

return "/home/fmain";
}

过滤器 :  当cookie里面有账户和密码时  走重定向 跳过登录页面直接进入视图页面   当cookie里面没有账户和密码时 重新进入登录页面

 
package com.lanou.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.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;




@WebFilter("/*")  //过滤路径

public class AuthFilter implements Filter{

@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}


public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)
throws IOException, ServletException {
// 地址
HttpServletRequest request = (HttpServletRequest) srequest;
HttpServletResponse response = (HttpServletResponse) sresponse;
String path = request.getContextPath();
String url = request.getRequestURL().toString();
String uri = request.getRequestURI().toString();
// http://localhost:8080/jk/
url = url.substring(url.lastIndexOf("/")+1);


if (url.equals("index")||url.equals("")) {
//
boolean flag = isExist(request);
if (flag) {
response.sendRedirect("f.action");
return;
}
}
chain.doFilter(request, response);
}


/**
* 判断cookie 里面是否存在用户名和密码
* @return
*/
public boolean isExist(HttpServletRequest request) {
// 不存在的
boolean flag = false;
Cookie[] cs = request.getCookies();
int count = 0;// 记录比较次数
if (cs!=null) {


for (Cookie c : cs) {
if (c.getName().equals("userName")) {
count++;
}
if (c.getName().equals("password")) {
count++;
}
}
}
if(count==2) {
flag = true;
}
return flag ;
}



}


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火染星野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值