demo之springboot-vue前后端分离session过期重新登录

简单回顾cookie和session

  1. cookie和session都是回话管理的方式
  2. Cookie
    • cookie是浏览器端存储信息的一种方式
    • 服务端可以通过响应浏览器set-cookie标头(header),浏览器接收到这个标头信息后,将以文件形式将cookie信息保存在浏览器客户端的计算机上。之后的请求,浏览器将该域的cookie信息再一并发送给服务端
    • cookie默认的存活期限关闭浏览器后失效,即浏览器在关闭时清除cookie文件信息。我们可以在服务端响应cookie时,设置其存活期限,比如设为一周,这样关闭浏览器后也cookie还在期限内没有被清除,下次请求浏览器就会将其发送给服务端了
  3. Session
    • session的使用是和cookie紧密关联的
    • cookie存储在客户端(浏览器负责记忆),session存储在服务端(在Java中是web容器对象,服务端负责记忆)
    • 每个session对象有一个sessionID,这个ID值还是用cookie方式存储在浏览器,浏览器发送cookie,服务端web容器根据cookie中的sessionID得到对应的session对象,这样就能得到各个浏览器的“会话”信息
    • 正是因为sessionID实际使用的cookie方式存储在客户端,而cookie默认的存活期限是浏览器关闭,所以session的“有效期”即是浏览器关闭

开发环境

  • JDK8、Maven3.5.3、springboot2.1.6、STS4
  • node10.16、npm6.9、vue2.9、element-ui、axios

springboot后端提供接口

  • demo 已放置 Gitee
  • 本次 demo 只需要 starter-web pom.xml

    org.springframework.boot
    spring-boot-starter-web
  • 后台接口只提供接口服务,端口8080 application.properties
server.port=8080
  • 只有一个controller,里面有3个handle,分别是登录、注销和正常请求 TestCtrller.java
@RestController
public class TestCtrller extends BaseCtrller{
    //session失效化-for功能测试
    @GetMapping("/invalidateSession")
    public BaseResult invalidateSession(HttpServletRequest request) {
        HttpSession session = request.getSession(false);
        if(session != null && 
                session.getAttribute(SysConsts.Session_Login_Key)!=null) {
            request.getSession().invalidate();
            getServletContext().log("Session已注销!");
        }
        return new BaseResult(true);
    }
    
    //模拟普通ajax数据请求(待登录拦截的)
    @GetMapping("/hello")
    public BaseResult hello(HttpServletRequest request) {
        getServletContext().log("登录session未失效,继续正常流程!");
        return new BaseResult(true, "登录session未失效,继续正常流程!");
    }
    
    //登录接口
    @PostMapping("/login")
    public BaseResult login(@RequestBody SysUser dto, HttpServletRequest request) {
        //cookie信息 
        Cookie[] cook

你可能感兴趣的:(java,javascript,后端,ViewUI)