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

相关文章
sa-token 路由拦截式鉴权
sa-token 路由拦截式鉴权
1043 0
【Sa-Token】4、Sa-Token开启注解式鉴权
前面我们已经介绍了路由式的鉴权方式,即就是拦截需要鉴权的 API 路径,允许哪些能够匿名访问,哪些必须要登录后才能访问,本篇文章介绍,如何使用 “注解式” 鉴权方式
693 0
|
缓存 NoSQL Java
一个轻量级 Java 权限认证框架——Sa-Token
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
【Sa-Token】8、Sa-Token开启全局侦听器
接口SaTokenListener是Sa-Token的全局侦听器,通过实现此接口,你可以在用户登录、退出、被踢下线等关键性操作时进行一些AOP操作
707 0
|
Java 微服务
【Sa-Token】1、Sa-Token实现登录功能
Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题
941 0
|
存储 数据库
【Sa-Token】5、Sa-Token授权操作
Sa-Token 在用户登录之后,并不会马上授权,而是等到需要验证的时候,才会去授权,授权也非常简单,我们只需要实现 StpInterface 接口,重写 getRoleList、getPermissionList 两个方法就好了,与 shiro 一样,同样返回 role 的标识集合,和 permission 的标识集合就好了
894 0
|
druid NoSQL Java
sa-token使用(源码解析 + 万字)一
sa-token使用(源码解析 + 万字)
3688 0
|
存储 安全 数据库
从内到外,彻底搞懂sa-token和Oauth2.0的防线
从内到外,彻底搞懂sa-token和Oauth2.0的防线
2618 0
|
前端开发
【Sa-Token】7、Sa-Token抛出的异常统一处理
在 Sa-Token 的登录,授权,验证过程中,会抛出很多的异常,我们不能将这些异常信息直接返回给用户,因为用户是看不懂这些异常信息的,我们就需要对这些异常信息进行处理,处理之后再返回展示给前端用户
2266 0
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
1809 8

热门文章

最新文章