SpringbootSecurity登陆验证(前后端分离)

本文详细介绍了如何使用Spring Boot Security和Vue.js实现基于JWT的登录验证。首先解释了JWT的基本概念,接着展示了如何创建后端项目,包括添加POM依赖,配置JWT过滤器、跨域设置及安全配置。前端部分主要涉及Vue项目的创建,特别是login页面的实现,以及在main.js中添加验证token的代码。最后总结了整个登录流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是jwt

JWT全称是JSON Web Token,如果从字面上理解感觉是基于JSON格式用于网络传输的令牌。实际上,JWT是一种紧凑的Claims声明格式,旨在用于空间受限的环境进行传输,常见的场景如HTTP授权请求头参数和URI查询参数。JWT会把Claims转换成JSON格式,而这个JSON内容将会应用为JWS结构的有效载荷或者应用为JWE结构的(加密处理后的)原始字符串,通过消息认证码(Message Authentication Code或者简称MAC)和/或者加密操作对Claims进行数字签名或者完整性保护。

二、创建后端项目

2.1 添加pom依赖

        <!-- hutool 依赖 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.16</version>
        </dependency>

2.2 编辑entity、mapper、service、controller

这里就不过多写了,依旧是跟上一边的文章一样

2.3 JWT 过滤器类

package com.aaa.filter;

import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
import com.aaa.until.ResponseMsg;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.stream.Collectors;

@Component
public class JWTFilter extends OncePerRequestFilter {


    /**
     * 重写的doFilterInternal方法
     * 解析token并验证用户信息
     * 如果验证成功,则保存用户信息并放行
     * 如果验证失败,则返回错误信息
     * 如果token为空且请求路径不在白名单中,则返回错误信息
     */
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        // 白名单路径
        String[] whitename = {"/login"};
        // 获取请求头中的token
        String token = request.getHeader("token");
        // 如果token不为空
        if (StringUtils.isNotBlank(token)) {
            // 验证token是否有效
            boolean verify = JWTUtil.verify(token, "user".getBytes());
            // 如果验证通过
            if (verify) {
                // 解析token,获取用户名和资源信息
                JWT jw
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值