使用令牌来保护未经身份验证的API

时间:2019-03-17 17:02:09

标签: java spring spring-boot spring-security jwt

客观

一个人创建资源(无需连接)时,会收到一个唯一的令牌,然后必须将该令牌传输到她发送的每个请求中,以获取有关其资源的信息。

问题

使用Spring可以做到这一点吗?确实,我找到并阅读的所有Tuto都使用了带有用户名和密码的身份验证。

已尝试

我的第一个想法是在POST方法的末尾创建一个令牌(将其存储到数据库中),将其放入每个GET请求中,并检查是否requestToken == databaseToken

但是,我认为这不是最好的方法。

那么,您能帮助我并建议我解决问题吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

有多种方法。

使用@SessionAttributes批注:

第一次访问我们的控制器时,Spring将实例化一个实例并将其放置在Model中。由于我们还在@SessionAttributes中声明了bean,因此Spring将存储实例。

您将通过@ModelAttribute在控制器的处理程序方法中获取它。

或者,您可以尝试以下路线:

@RequestMapping(value = "/test")
public String handler(HttpSession httpSession) {
    httpSession.getId(); //this will give you unique identifier that you can set back to object that you send to front end and can share the same ID between requests. 
}

https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html#getId--