【问题标题】:Should pass and get id from params or should get from JWT token?应该从参数传递并获取 id 还是应该从 JWT 令牌获取?
【发布时间】:2020-09-29 08:38:34
【问题描述】:

以 REST 方式对资源进行建模时。我们使用分层模式。

我将在/users 为我的User 资源建模,在/users/:id/profile 为用户的个人资料建模

此外,用户必须使用令牌进行身份验证才能访问他们的个人资料,在本例中为 JWT

所以,我也可以这样建模/useruser/profile

我有这种困惑很久了,但同时预感到第一个更好。

我应该从 params 还是从 JWT 令牌传递和获取 id?

【问题讨论】:

    标签: rest url jwt


    【解决方案1】:

    另一种选择是在 uri ( users/self/profile ) 中使用“self”。我通常创建一个从参数( user/{id}/profile )获取 id 的 api,然后为那些不想发送 id 并为他们从 JWT 令牌读取用户 ID 的客户端编写一个中间件。

    我放了一些代码来更好地解释我的意思。 例如我们有这个 api:

    [HttpGet("users/{userId}/profile")]
    public IHttpActionResult GetProfile(long userId)
    {
    
    }
    

    我们可以这样调用api:users/1/profile

    然后我有了这个中间件:

    public class SelfRequestMiddleware
    {
        public void Invoke()
        {
            // input : /users/self/profile
            // output : /users/1/profile
    
            if(Uri.Split('/').Contains("self"))
                Uri.Replace("self",UserId); // Get User Id From Token
        }
    }
    

    现在我们可以用两个 uri 调用这个 api:

    /users/1/profile

    /users/self/profile

    这取决于客户端如何调用 api。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-08
      • 2021-04-20
      • 2020-05-05
      • 2021-07-05
      • 2017-11-04
      • 2016-09-13
      • 2017-12-12
      相关资源
      最近更新 更多