SpringBoot整合sa-token,jwt登录及拦截器鉴权Demo
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class SaTokenConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 拦截所有请求,通过判断是否携带token和是否登录来进行鉴权
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/login", "/register"); // 登录和注册接口不需要鉴权
}
}
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
// 从http头中获取token
String token = request.getHeader("Authorization");
// 使用sa-token进行鉴权
boolean login = StpUtil.checkToken(token, "jwt");
if (login) {
return true; // 鉴权通过
} else {
// 鉴权失败,返回错误信息
SaResult.error("登录失效或身份验证过期,请重新登录").setErrorType(ErrorType.LOGIN_TIMEOUT).write(response);
return false;
}
}
}
这个代码示例展示了如何在Spring Boot项目中使用sa-token
进行登录鉴权。首先,我们定义了一个SaTokenConfig
配置类,实现了WebMvcConfigurer
接口,在其中注册了一个自定义的LoginInterceptor
拦截器,拦截所有请求,并排除登录和注册接口。在preHandle
方法中,我们通过获取请求头中的Authorization
来获取jwt token,并使用StpUtil.checkToken
方法来进行鉴权。如果鉴权失败,我们返回错误信息给客户端。
评论已关闭