【Springboot+Vue】做一个权限管理后台(六):用户凭证与登出

本文介绍了如何利用Shiro、Session和Token实现用户权限管理。在用户登录后,服务器返回SessionID或Token作为凭证,前端通过Vuex存储并设置请求头。在登出时,前端发送请求,Shiro处理登出操作。同时,文章讨论了前端路由拦截,确保未登录用户无法直接访问登出页面。
摘要由CSDN通过智能技术生成

前言

当一个用户登录以后,如果做每一件事情都需要再次携带用户名密码访问数据库认证,验证通过后才可以做,那么无疑增大了数据库的压力。所以我们就得给已经登录的用户一个凭证,让这个用户以后直接带着这个凭证访问我们的控制层。

服务器端Session和Token

  • Session
    Session的状态存储在服务器内存中,每次根据用户的请求拿出对比,效率较高。但是人数多的时候服务器顶不住。

    • 用户登录后,返回给用户该Session的ID,并告诉用户以后访问在请求头中带上这个ID。(服务器存储起来在内存中)

    • 服务器端直接根据请求头判断这个用户的当前状态,是否登录,认证是否过期等。从而减轻了数据库访问的压力。

  • Token
    Token的方式与Session类似,但是Token不存储在服务器中,服务器要做的主要是对提交的用户信息进行加密等手段,返回带有一定用户信息的Token给用户,登录流程如下:

    • 用户登录,根据用户信息按照算法生成Token返回给用户,并告诉用户以后在请求头中带上。(服务器不存储)

    • 服务器根据请求头中的Token信息,解析出来当前用户的信息状态。

客户端cookie、localStorage、sessionStorage

图源——JS 详解 Cookie、 LocalStorage 与 SessionStorage
在这里插入图片描述

前端保存授权信息:Vuex

那么前端拿到后端生成的凭证如何存储呢?这就需要引入Vue中一个持久化的存储方案——Vuex,它可以将信息保存在当前的Vue状态下,需要的时候直接取出。

  1. 安装
    在VScode的终端中输入:
    npm install vuex --save
    在这里插入图片描述
  2. 封装axios请求,让每次请求头带上凭证。
    在src文件夹下创建utils文件夹,创建http.js文件,具体代码可以参考我的——对axios的封装
    在这里插入图片描述
    这样每次请求都会去拿存储在vuex中的token信息。
  3. 配置 vuex
    在src文件夹下创建store文件夹,下面创建index.js文件,在其中配置vuex的代码。
    import Vue from 'vue'
    import Vuex from 'vuex'
     
    Vue.use(Vuex)
    const key = 'user'
    const store = new Vuex.Store({
         
      state : {
         
        username:window.localStorage.getItem('user' || '[]') == null ?'' : JSON.parse(window.localStorage.getItem('user' || '[]')).username,
        token:''
      },
      mutations: {
         
        setUserName(state,username){
         
          state.username = username
        },
        setUserToken(state,token){
         
          state.token = token
        },
        logout(state,user){
         
          state.username=null,
          state.token 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值