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


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

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

    2. 通过session实现

    cookie和session:

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

    session用法

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

    通过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";
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    其中

    Object username = session.getAttribute("username");
    Object password = session.getAttribute("password");
    1
    2
    这两句话时获取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(http://www.my516.com));
    }
    return "success";
    } else {
    System.err.println("账号密码错误!!!!");
    return "error";
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    这个方法的使使用了jason传输了字符串,返回给前端的ajax。
    首先前端将账户密码框、勾选框的信息传送过来,然后验证账户密码信息,接着做判断,根据2中分析的情况决定是否给session赋值,然后告诉前台是否放行
    3. 注意内容是:session的用法:
    在方法中加入参数:HttpSession session
    session赋值:session.setAttribute("username",user.getUserName());
    session取值:session.getAttribute("username");
    ---------------------

  • 相关阅读:
    ASP连接mysql
    jsp中动态include与静态include的区别
    Create & Post free text invoice by code
    自定义Form作为Dialog
    动态多关联查询
    转到主表窗口
    获取当前用户组
    一个Job调用另外一个Job
    保存图片到硬盘
    在编辑框中增加右键菜单
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11173762.html
Copyright © 2020-2023  润新知