首页 > 解决方案 > 在一个 SpringBoot 应用程序中同时使用 JWT 和表单身份验证?

问题描述

我有一个使用弹簧安全性的弹簧启动应用程序。我实现了基于表单的身份验证,它运行良好。我希望该应用程序充当我构建的 Angular 应用程序的后端。我知道 CORS,但是如何将 JWT auth 添加到现有的 Spring Boot 应用程序中,是否推荐。

标签: javaspring

解决方案


我会推荐 AOP 概念来验证/验证您的 jwt 令牌。

首先你需要创建一个自定义注释。将其命名为 JWTsecured

@Component
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface JwtSecured {

}

现在你有一个控制器,你的 api 需要 JWT 保护。

@RestController
public class YourController {

    @GetMapping(value="/testApi")
    @JWTsecured
    public void isTestApi() {
    }

}

现在您必须编写一个方面来验证您的令牌......


@Component
@Aspect
public class JWTsecuredAspect {

@Around(value =" @within(com.JWTSecured) || @annotation(com.JWTSecured)")
    public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {  
   String token = request.getHeader("Authorization");
   if(!isTokenValidated(token)){
    throw CustomException("Invalid Token.")
}
}
}

这就是您可以将它与 auth 一起使用的方式。还有其他几种方法。随时联系


推荐阅读