首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将用户存储在in /IIdentity中有什么好处?

将用户存储在in /IIdentity中有什么好处?
EN

Stack Overflow用户
提问于 2014-09-13 11:40:48
回答 2查看 514关注 0票数 0

与拥有包含所需属性的自定义用户类并将其用于身份验证/授权相比,I主体/IIdentity的优势是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-13 12:42:39

明显的好处如下:应用程序的身份验证和授权的整个概念是围绕以IPrincipal / IIdentity表示的主体和身份构建的。正因为如此,内置机制通常假设使用这两种机制。如果他们被使用,内置的机制可以工作。

以web应用程序为例。HttpContext的用户在请求的生命周期内被表示为IPrincipal。通过遵循这个约定,您可以允许授权机制正确地评估用户是否允许访问web资源。这是因为WebForms UrlAuthorization的模块和MVC的Authorization属性都假定主体是以这种标准方式存储的。

在桌面应用程序中,您可以使用ThreadCurrentPrincipal,这也是一个IPrincipal

用您自己的身份验证/授权接口替换IPrincipal/IIdentity将花费很长时间。您必须重写基类库中处理身份验证/授权的大部分部分,而不是内置接口,而是依赖您的自定义实现。

但是,我看不出你提出的两种说法之间有什么不同。您询问了IPrincipal相对于自定义类的优势。但是IPrincipal 只是一个接口 (!!)而且您的自定义类可以很容易地实现它。IIdentity也是如此。然后,您可以将您的自定义类放在期望IPrincipal的任何地方。

当然,这可能有点棘手,例如,在web应用程序中,您必须替换内置在设置IPrincipal的身份验证模块中。有两种最常用的方法-- FormsAuthenticaiton使用GenericPrincipal/FormsIdentitySessionAuthenticationModule使用ClaimsPrincipal/ClaimsIdentity。相反,您的自定义模块可以使用任意自定义实现。

票数 3
EN

Stack Overflow用户

发布于 2014-09-13 12:31:38

Active Directory、Windows和Windows本身等标准身份验证方法都使用IPrincipalIIdentity。基本上,如果您想使用任何内置身份验证机制,就必须使用这些类。通常,您将有一个自定义数据库模式来存储用户信息,并将根据该数据创建IPrincipalIIdentity对象以进行身份验证。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25822840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档