【发布时间】: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