【问题标题】:WebAPI 2 secure routing parameterWebAPI 2 安全路由参数
【发布时间】:2017-07-21 17:50:37
【问题描述】:

我有一种情况,我不想在 API 路由参数中传递已登录的用户 ID。 例如,有一个 WebAPI [GET 或 POST] 端点 'api/getUserDetails/{id}'。这个 id 被传递到另一个层来获取用户数据。

public RestResult getUserDetails(int uID)
{
  int uID = getFromHeaderCookie();
  var userDetails = someService.GetUserDetail(uID);
  return userDetails;
} 

这里 id 作为路由参数传递,通过更改 Id 值,任何人都可以看到其他用户的数据。

所以现在我希望 url 应该像 'api/getUserDetails' 并且我正在从登录时保存的标头 Cookie 中读取 Id。使用 ActionFilters 我可以设法获取 Id。

public RestResult getUserDetails( )
    {
      int uID = getFromHeaderCookie();
      var userDetails = someService.GetUserDetail(uID);
      return userDetails;
    } 

这是可行的,但看起来不太好,因为我想通过其他方法来保护 UserId。 有什么方法可以删除int uID = getFromHeaderCookie(); 并使用一些自定义模型绑定器在控制器中注入用户ID?

提前致谢

【问题讨论】:

    标签: asp.net-web-api actionfilterattribute


    【解决方案1】:

    你可以试试Oauth,从ClaimsIdentity获取用户信息,只需要在请求url时加上Authorization(如Bearer AccessToken)。

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多