【Sa-Token】3、Sa-Token开启路由式鉴权

简介: 登录拦截,也就是说我们需要配置哪些 API 是用户不需要登录就可以访问的,哪些 API 必须要登录之后才能访问的

登录拦截,也就是说我们需要配置哪些 API 是用户不需要登录就可以访问的,哪些 API 必须要登录之后才能访问的

1、创建拦截器

package com.asurplus.common.satoken;
import cn.dev33.satoken.stp.StpUtil;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class SaTokenLoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在拦截器中,如果请求为OPTIONS请求,则返回true,表示可以正常访问,然后就会收到真正的GET/POST请求
        if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
            return true;
        }
        // 检验当前会话是否已经登录, 如果未登录,则抛出异常:`NotLoginException`
        StpUtil.checkLogin();
        // 已经登录
        return true;
    }
}

这里如果是 OPTIONS 请求,我们需要直接通过,返回 true

然后我们使用 StpUtil.checkLogin(); 来检车该用户是否登录,此方法会抛出 NotLoginException 异常,我们只需要捕获到该异常,就能给前端返回未登录的信息提示

2、注册拦截器

接着上一篇的配置类,我们只需要实现 WebMvcConfigurer 接口,重写 addInterceptors 方法就好了

/**
 * 注册拦截器
 *
 * @param registry
 */
@Override
public void addInterceptors(InterceptorRegistry registry) {
    // 注册登录拦截器
    registry.addInterceptor(new SaTokenLoginInterceptor())
            // 需要拦截的路径
            .addPathPatterns("/**")
            // 不需要拦截的路径
            .excludePathPatterns(
                    // 获取验证码
                    "/kaptcha-image",
                    // 登录
                    "/login",
                    // 登出
                    "/logout",
                    // 开发文档
                    "/doc.html", "/webjars/**", "/v2/api-docs/**", "/swagger-resources/**", "/favicon.ico"
            );
}

我们对 获取验证码、登录、登出 以及 开发文档的请求地址放开了访问权限,也就是即使用户不登录,也能访问这些 API 接口,其它的接口,都需要用户登录之后才能访问了

目录
相关文章
|
8月前
sa-token实现网关调用认证服务统一鉴权
sa-token实现网关调用认证服务统一鉴权
403 0
|
前端开发
【Sa-Token】7、Sa-Token抛出的异常统一处理
在 Sa-Token 的登录,授权,验证过程中,会抛出很多的异常,我们不能将这些异常信息直接返回给用户,因为用户是看不懂这些异常信息的,我们就需要对这些异常信息进行处理,处理之后再返回展示给前端用户
1356 0
|
缓存 NoSQL 中间件
【Sa-Token】6、Sa-Token集成Redis
Sa-Token 支持 Redis、Memcached 等专业的缓存中间件中, 做到重启数据不丢失,而且保证分布式环境下多节点的会话一致性
1752 0
|
4月前
|
JSON 安全 数据安全/隐私保护
从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用
【9月更文挑战第22天】在.NET 8中,从零开始搭建权限管理系统并使用JWT(JSON Web Tokens)创建Token是关键步骤。JWT是一种开放标准(RFC 7519),用于安全传输信息,由头部、载荷和签名三部分组成。首先需安装`Microsoft.AspNetCore.Authentication.JwtBearer`包,并在`Program.cs`中配置JWT服务。接着,创建一个静态方法`GenerateToken`生成包含用户名和角色的Token。最后,在控制器中使用`[Authorize]`属性验证和解析Token,从而实现身份验证和授权功能。
282 3
|
5月前
|
API
【Azure Developer】记录一段验证AAD JWT Token时需要设置代理获取openid-configuration内容
【Azure Developer】记录一段验证AAD JWT Token时需要设置代理获取openid-configuration内容
|
6月前
|
安全 NoSQL Java
JWT和Security 登录权限判断和token访问和让token失效
JWT和Security 登录权限判断和token访问和让token失效
|
8月前
|
存储 缓存 NoSQL
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
144 1
|
缓存 前端开发 fastjson
Sa-Token中SerializationException
Sa-Token中SerializationException
90 1
|
8月前
|
存储 JSON 算法
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
157 0