【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 接口,其它的接口,都需要用户登录之后才能访问了

目录
相关文章
|
6月前
sa-token实现网关调用认证服务统一鉴权
sa-token实现网关调用认证服务统一鉴权
361 0
|
前端开发
【Sa-Token】7、Sa-Token抛出的异常统一处理
在 Sa-Token 的登录,授权,验证过程中,会抛出很多的异常,我们不能将这些异常信息直接返回给用户,因为用户是看不懂这些异常信息的,我们就需要对这些异常信息进行处理,处理之后再返回展示给前端用户
1267 0
|
缓存 NoSQL 中间件
【Sa-Token】6、Sa-Token集成Redis
Sa-Token 支持 Redis、Memcached 等专业的缓存中间件中, 做到重启数据不丢失,而且保证分布式环境下多节点的会话一致性
1584 0
|
4月前
|
安全 NoSQL Java
JWT和Security 登录权限判断和token访问和让token失效
JWT和Security 登录权限判断和token访问和让token失效
|
6月前
|
存储 缓存 NoSQL
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
126 1
|
11月前
|
缓存 前端开发 fastjson
Sa-Token中SerializationException
Sa-Token中SerializationException
76 1
|
11月前
Sa-Token
Sa-Token
61 0
EMQ
|
JSON 安全 算法
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
本文将深入了解基于 Token 的认证和 OAuth 2.0,阐述它们的原理并展示它们在 MQTT 中的应用。
EMQ
346 0
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
sa-token 路由拦截式鉴权
sa-token 路由拦截式鉴权
660 0
|
API
【Sa-Token】4、Sa-Token开启注解式鉴权
前面我们已经介绍了路由式的鉴权方式,即就是拦截需要鉴权的 API 路径,允许哪些能够匿名访问,哪些必须要登录后才能访问,本篇文章介绍,如何使用 “注解式” 鉴权方式
353 0