springmvc中的session:不比对数据库自动登陆

我们经常会遇到这样一个问题:

在写前端登陆的代码时,登陆会有自动登陆的功能。
在这里插入图片描述
如图所示,这是一个简单的登陆页面,其中包含了一个自动登陆功能,这个功能其实很好做。

1.这个功能可以靠cookie实现

判断如果用户勾选了自动登陆,就将用户信息保存在cookie中,那么每次跳转登陆页面前,做一下判断,如果cookie中的值和数据库中的值时一致的,就直接跳转到其他内容。这个话题不是本次讨论内容,不过后期会加上去的。

  • 2019.07.25 添加内容:
    cookie可以借助一个好用的插件,jQuery的cookie插件!
    cdn链接为:
<script src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

用法:

  1. 塞值:直接$.cookie(key,value)
    例如,$.("user","zhangsan")
    在这里插入图片描述
  2. 取值:$.cookie(key)
    例如,$.cookie("user")的值为zhangsan
    在这里插入图片描述

2. 通过session实现

cookie和session:

简单的说,session时存在于服务器端的,cookie时存在于浏览器端的。cookie的存放时间可人为调整。

session用法

session的实现,其实可cookie差不多,但是我在这里没有去拿数据库的内容和session作比较,因为我的判断方式稍微不同。

  1. 通过controller层的方法进入到登陆页面:
@RequestMapping("/login")
public String in(HttpSession session){
    Object username = session.getAttribute("username");
    Object password = session.getAttribute("password");
    System.out.println("session++++++++++"+username+password);
    if (username != null && password != null){
        return "redirect:list";
    }else {
        return "login";
    }
}

其中

Object username = session.getAttribute("username");
Object password = session.getAttribute("password");

这两句话时获取session中的账户密码,当然,在初次登陆的时候,我们session中并没有存放。所以直接走return "login";到登陆页面;
我并没有抽取数据库中的数据做对比,是因为我在接下来添加session的时候,先判断了用户在点击登陆的时候,账户密码是否正确,如果正确接着判断:用户是否勾选了“自动登陆”,如果时,那么将账户密码信息保存在session中,这样就做到了不比对数据库,只判断空不空就能使安全自动登陆的功能,代码如下:
2. 点击登陆后执行的controller方法:

@RequestMapping("/loginUser.action")
@ResponseBody
public String login(User user,boolean rememberMe,HttpSession session) {
    System.out.println(user);
    System.out.println("rememberMe:"+rememberMe);
    boolean result = userService.confirm(user);
    System.out.println(result);
    if (result) {
        System.out.println("账号密码正确!");
        if (rememberMe) {
            session.setAttribute("username",user.getUserName());
            session.setAttribute("password",user.getPassword());
        }
        return "success";
    } else {
        System.err.println("账号密码错误!!!!");
        return "error";
    }
}

这个方法的使使用了jason传输了字符串,返回给前端的ajax。
首先前端将账户密码框、勾选框的信息传送过来,然后验证账户密码信息,接着做判断,根据2中分析的情况决定是否给session赋值,然后告诉前台是否放行
3. 注意内容是:session的用法:
在方法中加入参数:HttpSession session
session赋值:session.setAttribute("username",user.getUserName());
session取值:session.getAttribute("username");

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值