栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring利用session判断用户的登陆状态,实现强制登陆

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring利用session判断用户的登陆状态,实现强制登陆

文章目录
  • 前言
  • 用户登陆
  • 注销登陆
  • 拦截器类(强制登陆功能的关键):
  • 拦截器在springmvc-servlet.xml里的配置:

前言

在web项目里,当用户量少时 我们通常用session来判断用户的登陆状态,以此来实现强制登陆

强制登陆概念:
只有当用户用帐号密码登陆后,我们在浏览器上可以访问购物车,订单等页面,否则会自动跳转到登陆页面;

用户登陆

当用户第一次登陆时,我们手动向session里存入一个登陆标识,用来存入用户的状态:

    //登陆
    @RequestMapping("/login")
    public String login(String email, String password, HttpServletRequest request){
        User user = userService.selectByEmailPassword(email, password); //调用方法验证登录的email和密码是否正确,验证错误返回user=null
        HttpSession session = request.getSession();  //获取session作用域
        if(user==null){  //登陆失败 跳转到登陆页面
            return "redirect:/user/login_form.jsp";
        }else {  //登录成功
            session.setAttribute("user",user);//将登陆的用户信息传入session作用域
            return "forward:/book/showMain.do";
        }
    }
注销登陆

当用户注销登陆时,移除session作用域中的登陆标识:

  //登出
    @RequestMapping("/loginOut")
    public String loginOut(HttpSession session){
        session.removeAttribute("user");//移除作用域中的登陆的user对象
        session.invalidate();//销毁session
        return "redirect:/user/login_form.jsp";
    }
拦截器类(强制登陆功能的关键):
package com.lgy.util;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//拦截器类
public class MyHandlerInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession(); //获取session作用域
        Object user = session.getAttribute("user");  // 获取session中的登陆标识
        if(user!=null){   //登陆标识不为空,则证明已经登陆过
            return  true;
        }else {   //登陆标识为空。证明未登录,
            response.sendRedirect(request.getContextPath()+"/user/login_form.jsp"); //重定向跳转到登陆页面
            return  false;  //返回false,则不能继续下面的方法执行
        }
    }

  @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }

}

拦截器在springmvc-servlet.xml里的配置:
  
    
        
            
            
            
            
            
            
            
            
            
        
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号