SSM中使用Token和spring过滤器进行判断用户是否登陆

首先我们需要修改登录方法对应存储用户登录信息的代码

将用户登录时生成的token存入Redis
并向前台界面返回token值

//使用uuid生成token
String token = UUID.randomUUID().toString();
//将用户信息存入redis
jedisPool.getResource().setex(token,60 * 60 * 24 * 15 ,JSON.toJSONString(member));
//将token返回给前端
return Result.success("登录成功",token);

处理登录返回结果

在axios中添加localStorage.setItem("token",response.data.data)

axios.post("/login/check.do",this.loginInfo).then((response) => {
    if(response.data.flag){
      //将服务端返回token保存在浏览器
      localStorage.setItem("token",response.data.data)  
      //登录成功,跳转到index.html
      window.location.href="index.html";
    }else{
      //失败,提示失败信息
      this.$message.error(response.data.message);
    }

然后需要写一个js文件在需要进行获取token的页面导入

存入网页的请求头内

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前将登录保存的token添加在请求头里面
    config.headers.token = localStorage.getItem("token")
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

添加spring拦截器

获取token

public class TokenInterceptors implements HandlerInterceptor{
    
    @Autowired
    private JedisPool jedisPool;
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //获取页面携带的Token
        String token = request.getHeader("token");
        //通过token查看是否存在此用户
        String s = null;
        try {
            s = jedisPool.getResource().get(token);
            if (s.equals("")||s==null){
                return false;
            }
        } catch (Exception e) {
            return false;
        }

        return true;
    }
}

springmvc中的配置

  <!-- 注册自定义的拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <!-- 拦截所有请求 -->
            <mvc:mapping path="/order/**"/>   //需要进行拦截的requestMapping 的请求行为

            <!-- 自定义拦截器的全路径 -->
            <bean class="com.zyfmobile.interceptors.TokenInterceptors"/>
        </mvc:interceptor>
    </mvc:interceptors>
发布了13 篇原创文章 · 获赞 5 · 访问量 230

猜你喜欢

转载自blog.csdn.net/qq_38559956/article/details/103301122