如何使用 JWT Authentication 在 springboot 中使用 html 模板?

Posted

技术标签:

【中文标题】如何使用 JWT Authentication 在 springboot 中使用 html 模板?【英文标题】:How to use html template in springboot using JWT Authentication? 【发布时间】:2020-01-31 21:05:16 【问题描述】:

几天来,我开始学习使用 springboot,尤其是使用 spring security 进行用户身份验证,为此我决定使用一个用户身份验证并可以根据他们的身份访问服务的系统来做一个 apirest特定角色。

我以这篇文章为指导:https://grokonez.com/spring-framework/spring-boot/spring-security-jwt-authentication-postgresql-restapis-springboot-spring-mvc-spring-jpa

在其中使用它 Spring Security JWT Authentication PostgreSQL - RestAPIs SpringBoot Spring MVC Spring JPA

我想将它与 html 模板集成,可能在 pom.xml、bootstrap 和 jquery 中使用 thymeleaf 依赖项(不使用 Agular React 或 Vuejs,因为由于兼容性问题,这是我在工作中应该这样做的方式)

我也看过几个使用thymeleaf但不包括JWT身份验证的教程

谁能告诉我如何完成这个练习?任何教程解释如何做到这一点?

【问题讨论】:

【参考方案1】:

我假设您链接中的 @PreAuthorize("hasRole('USER')") 之类的注释对于 thymeleaf 端点应该是一样的。

例如:

@Controller
public class ThymeleafController 

    @GetMapping("/hello")
    @PreAuthorize("hasRole('USER')")
    public String hello() 
        return "thymeleaf-template";
    


【讨论】:

是的,但是我需要先从主页开始,例如 home.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <head> <title>Security with Spring Boot</title> </head> <body> <h1>Hello, This is Home page!</h1> <a style="color: blue" th:href="@/user">User Page</a> <br /> <a style="color: blue" th:href="@/admin">Admin Page</a> </body> </html> 然后重定向到 thymeleaf-template,问题是:我该怎么做? 如果你想从你的 Spring Boot 应用程序中提供额外的静态文件,你可以将这些文件保存在 src/main/resources/static 中。这些文件将在运行时可用。例如。可以在 localhost:8080/home.html 访问文件 src/main/resources/static/home.html 是的,但是,如何从html模板中获取token? 如果你想要一些逻辑发生,你必须编写一个 Spring Boot 控制器。要从 HTTP 请求中读取令牌,您的方法应该有一个带注释的参数。请参阅此处的示例:baeldung.com/spring-rest-http-headers#accessing 对于 Json Web 令牌,您的请求标头被命名为授权而不是“accept-language”,并且您注入的参数值是以“Bearer ...”开头的字符串,您可以使用所需的库进行解析。 Spring 安全和 JWT 授权您的请求。您只需要使用令牌验证 URL。我给你一个 github 链接,你可以试试那个代码。 github.com/PallavRaj14/purchase-history/tree/jwt-authentication授权后你想退货什么都可以退货。

以上是关于如何使用 JWT Authentication 在 springboot 中使用 html 模板?的主要内容,如果未能解决你的问题,请参考以下文章

wp rest api 授权方法步骤(使用JWT Authentication插件)

(ReactJS-Laravel) JWT Authentication Header (获取用户信息)

JWT Authentication,Authorize 属性中定义的角色被忽略

Spring Boot JWT Authentication:登录和注销后触发一个方法

应该将 JWT 中不存在的角色添加到 Authentication 对象的啥位置?

JWT spring security Authentication过滤器丢失标头信息