我有一种情况,我不想在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值,任何人都可以看到其他用户数据。
所以现在我想要的网址应该是' api / getUserDetails'我正在从登录时保存的标题Cookie中读取Id。使用ActionFilters我可以设法获得Id。
public RestResult getUserDetails( )
{
int uID = getFromHeaderCookie();
var userDetails = someService.GetUserDetail(uID);
return userDetails;
}
这是有效的,但看起来不太好,因为还有其他方法我想要保护UserId。
有没有办法删除int uID = getFromHeaderCookie();
并使用一些自定义模型绑定器在控制器中注入userID?
提前致谢