C# 用于添加/编辑/删除场景的WebAPI保护资源
我在IIS上安装了以下设置C# 用于添加/编辑/删除场景的WebAPI保护资源,c#,.net,authentication,asp.net-web-api,owin,C#,.net,Authentication,Asp.net Web Api,Owin,我在IIS上安装了以下设置WebAPI,带有OWIN令牌身份验证,具有以下场景: 用户有一个个人资源,比如说只有他们可以编辑的个人资料 在我的应用程序中,我通过随机生成的ID识别用户 我将这个ID保存在前端,对API的请求包含它 现在,我希望确保并授权编辑个人资源的请求,以便只有所有者(例如,其配置文件为的用户)可以修改任何字段 修改此资源的请求到达后,我想检查调用者(取自请求)是否与HttpContext中的调用者相同(因此有人修改其请求中的公共可用id以拒绝编辑命令) 请记住,在我的请求
WebAPI
,带有OWIN令牌身份验证
,具有以下场景:
- 用户有一个个人资源,比如说只有他们可以编辑的个人资料李>
- 在我的应用程序中,我通过随机生成的
识别用户李>ID
- 我将这个
保存在前端,对ID
API的请求包含它
授权
编辑个人资源的请求,以便只有所有者(例如,其配置文件为的用户)可以修改任何字段
修改此资源的请求到达后,我想检查调用者(取自请求)是否与HttpContext
中的调用者相同(因此有人修改其请求中的公共可用id以拒绝编辑命令)
请记住,在我的请求中,我保留用户的ID
,而在HttpContext.Current.user.Identity上则包含电子邮件。此时,我可以打电话给用户经理,通过HTTPContext
中的电子邮件在数据库中搜索用户,并检查ID是否相等。但这需要我在开始实际执行命令之前就对数据库提出问题(因此从性能角度来看,这并不完美)
有没有一种方法可以用ID
填充HttpContext
(在电子邮件中,或者将Name
属性从User.Identity
更改为ID
),这样我就可以拥有类似HttpContext.User.Identity.ID
(因为我认为我无法修改该对象-显而易见的原因)?或者HttpContext.User.Identity.Name
给我ID
还是可以在WebAPI
内部使用HttpContext
谢谢,
拉杜
编辑:在一次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填充标识
谢谢 WebAPI和HttpContext
。那里有设计的味道!好的,那么检索请求的上下文的合适方法是什么呢?谢谢