我在WebAPI
的IIS上托管了以下设置OWIN token authentication
,其中包含以下方案:
ID
; ID
保留在前端,API
的请求包含现在我想确保并authorize
编辑个人资源的请求,以便只有所有者(例如,其个人资料所在的用户)才能修改任何字段。
在修改此资源的请求到达之后,我想检查调用者(取自请求)是否与HttpContext
中的调用者相同(因此有人修改了他的请求中的公共可用ID)被拒绝编辑命令。)
请记住,在我的请求中,我保留了用户的ID
,而HttpContext.Current.User.Identity
包含了该电子邮件。此时,我可以调用用户管理器并使用HTTPContext
的电子邮件在数据库中搜索用户,并检查ID是否相等。但这要求我在开始实际执行命令之前对数据库提出质疑(因此从性能的角度来看并不完美)。
我是否可以使用HttpContext
填充ID
(包括电子邮件或将Name
属性从User.Identity
更改为ID
),以便我可以有类似HttpContext.User.Identity.Id
的东西(因为我认为我不能修改那个对象 - 显而易见的原因)?或HttpContext.User.Identity.Name
给我ID
。
或者在HttpContext
内使用WebAPI
是否可以?
谢谢, 拉杜
编辑:在API
电话会议期间环顾当地人之后,我遇到了几个可以检索身份的地方:
ActionContext.RequestContext.Principal.Identity.Name
ActionContext.ControllerContext.Principal.Identity.Name
ControllerContext.RequestContext.Principal.Identity.Name
RequestContext.Principal.Identity.Name
User.Identity.Name
虽然我觉得最后一个(所以:User.Identity.Name
)可以是我可以使用的那个,无论应用程序类型如何(所以我可以从Web浏览器,桌面应用程序,移动应用程序调用),我是不太确定。
另外,有什么方法可以用我的ID填充Identity
吗?
谢谢!