【问题标题】:Return JWT token from successful authentication从成功的身份验证中返回 JWT 令牌
【发布时间】:2020-10-20 23:46:29
【问题描述】:

我创建了这个端点来验证用户:

@PostMapping("/authorize")
public String login(@Valid @RequestBody AuthenticationDTO resetDTO) {
    return userRestService.authorize(resetDTO.getName(), resetDTO.getPassword());
}

认证成功后返回token。例如:

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOlt7ImF1dGhvcml0eSI6IlJPTEVfQURNSU4ifV0sImlhdCI6MTU5MzUzMjE4NiwiZXhwIjoxNTkzNTMyNDg2fQ.gevNLXsfe8F4MnfDZJK5GhhFn0MskoQejfUUqQjh0d_sa-wyloRf2zOQIhBkn1OEDR4ZyRvIhhEtWPrH33cLPg 

认证后返回与 JWT 令牌相关的 DTO 格式的最佳实践是什么?例如,将令牌返回为类似

的格式是否是个好主意
{
   Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOlt7ImF1dGhvcml0eSI6IlJPTEVfQURNSU4ifV0sImlhdCI6MTU5MzUzMjE4NiwiZXhwIjoxNTkzNTMyNDg2fQ.gevNLXsfe8F4MnfDZJK5GhhFn0MskoQejfUUqQjh0d_sa-wyloRf2zOQIhBkn1OEDR4ZyRvIhhEtWPrH33cLPg
}

在这种情况下有哪些好的做法?

【问题讨论】:

    标签: java spring-security jwt bearer-token jwt-auth


    【解决方案1】:

    除了返回 JSON 时总是返回对象(总是将数组、数字、字符串包装在顶级对象中)之外,没有真正好的做法。 对于您的特定用例,您可以在 oauth2 authorization framework 上举例并返回如下内容:

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Cache-Control: no-store
    Pragma: no-cache
    
    {
       "access_token":"2YotnFZFEjr1zCsicMWpAA",
       "token_type":"Bearer",
       "expires_in":3600,
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 2017-10-22
      • 1970-01-01
      • 2020-07-07
      • 2021-12-17
      • 2018-04-23
      • 1970-01-01
      • 2021-11-02
      • 2019-08-04
      相关资源
      最近更新 更多