Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api WebAPI 2安全路由参数_Asp.net Web Api_Actionfilterattribute - Fatal编程技术网

Asp.net web api WebAPI 2安全路由参数

Asp.net web api WebAPI 2安全路由参数,asp.net-web-api,actionfilterattribute,Asp.net Web Api,Actionfilterattribute,我不想在API路由参数中传递登录的用户ID。 例如,有一个WebAPI[GET或POST]端点'api/getUserDetails/{id}'。此id被传递到另一层以获取用户数据 public RestResult getUserDetails(int uID) { int uID = getFromHeaderCookie(); var userDetails = someService.GetUserDetail(uID); return userDetails; } 此处

我不想在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;
    } 
这是工作,但看起来不好,因为有其他方法,我想保护用户ID。 有没有办法删除
intuid=getFromHeaderCookie()并使用一些自定义模型绑定器在控制器中注入用户ID


提前感谢

您可以尝试Oauth,并从中获取用户信息,只需在请求url时添加授权(如Bear AccessToken)