ASP.NET平台通过HttpContext对象提供一些关于用户的有用信息,该对象由Authorize注解属性使用 的,以检查当前请求的状态,考察用户是否已被认证。HttpContext.User属性返回的是IPrincipal 接口的实现,该接口是在System.Security.Principal命名空间中定义的。


IPrincipal接口:

ASP.NET平台通过HttpContext对象提供一些关于用户的有用信息,该对象由Authorize注解属性使用 的,以检查当前请求的状态,考察用户是否已被认证。HttpContext.User属性返回的是IPrincipal 接口的实现,该接口是在System.Security.Principal命名空间中定义的。IPrincipal接口定义了 如下表所示的属性和方法:

名称  描述
 Identity  返回IIdentity接口的实现,它描述了与请求相关联的用户
 IsInRole(role)  如果用户是指定角色的成员,则返回true

IIdentity接口:

IPrincipal.Identity属性返回的IIdentity接口实现通过一些属性提供了有关当前用户的一些基本却有用的信息,下表描述了这些属性:

名称 描述
AuthenticationType 返回一个字符串,描述了用于认证用户的机制
IsAuthenticated 如果用户已被认证,返回true。
Name 返回当前用户的用户名

ASP.NET Identity含有一个处理AuthenticateRequest生命周期事件(第3章曾做过描述)的模块,并使 用浏览器发送过来的Cookie确认用户是否已被认证。 Identity用于IIdentity接口的实现类,其名称为ClaimsIdentity。

如果用户已被 认证,此ASP.NET框架模块便会将IIdentity.IsAuthenticated属性的值设置为true,否则设置为 false。(此刻尚未实现让用户进行认证的特性,这意味着在本示例应用程序中,IsAuthenticated 属性的值总是false。)


PasswordValidator类:

一个最常用的需求,特别是对于公司的应用程序,是强制口令策略。ASP.NET Identity提供了一个 PasswordValidator类,可以用下表所描述的属性来配置口令策略:

名称 描述
RequiredLength 指定合法口令的最小长度
RequireNonLetterOrDigit 当设置为true时,合法口令必须含有非字母和数字的字符
RequireDigit 当设置为true时,合法口令必须含有数字
RequireLowercase 当设置为true时,合法口令必须含有小写字母
RequireUppercase 当设置为true时,合法口令必须含有大写字母

定义口令策略的办法是,创建一个PasswordValidator类实例、设置其属性的值,并在OWIN用来实例化UserManager类的Create方法中将该对象作为PasswordValidator属性的值。

还可以执行更一般的验证,办法是创建UserValidator类的实例,并使用它所定义的属性,以限制用 户其他属性的值。下表描述了UserValidator的属性:

名称 描述
AllowOnlyAlphanumericUserNames 当为true时,用户名只能含有字母数字字符
RequireUniqueEmail 当为true时,邮件地址必须唯一

对用户细节执行验证的做法是创建UserValidator类实例,并在OWIN用来创建实例的Create方法中, 将它赋给用户管理器类的UserValidator属性。


IdentityResult接口:

CreateAsync方法的结果是一个IdentityResult接口的实现,它通过下表的属性描述操作的输出。

名称 描述
Errors 返回一个字符串枚举,其中列出了尝试操作期间所遇到的错误。
Succeeded 在操作成功时返回true

  

identity一些接口的更多相关文章

  1. 从Membership 到 .NET4.5 之 ASP.NET Identity

    我们前面已经讨论过了如何在一个网站中集成最基本的Membership功能,然后深入学习了Membership的架构设计.正所谓从实践从来,到实践从去,在我们把Membership的结构吃透之后,我们要 ...

  2. 向空项目添加 ASP.NET Identity

    安装 AspNet.Identity 程序包 Microsoft.AspNet.Identity.Core 包含 ASP.NET Identity 核心接口Microsoft.AspNet.Ident ...

  3. [转]Membership 到 .NET4.5 之 ASP.NET Identity

    本文转自:http://www.cnblogs.com/jesse2013/p/membership-part3.html 我们前面已经讨论过了如何在一个网站中集成最基本的Membership功能,然 ...

  4. [Solution] ASP.NET Identity(1) 快速入门

    本节将介绍: ASP.NET Identity简介 快速入门 扩展 ASP.NET Identity简介 身份管理在ASP.NET中存在很长世间了,ASP.NET 开发团队已经学会了很多从客户的反馈. ...

  5. (转)从Membership 到 .NET4.5 之 ASP.NET Identity

    引入 - 用户信息是如何存在数据库中的 我们前两篇都只讲到了怎么用Membership注册,登录等,但是我们漏掉了一个很重要并且是基本上每个用Membership的人都想问的,我的用户信息怎么保存?我 ...

  6. Asp.Net Identity自定义user类的运用,ClaimsIdentity

    mvc5自动生成的用户验证是比较好用的,还可以扩展,可是要求code first,目前使用sqlite,支持entity framework,但不支持code first. 只有自已简单模仿一下了.经 ...

  7. Asp.Net.Identity认证不依赖Entity Framework实现方式

    Asp.Net.Identity为何物请自行搜索,也可转向此文章http://www.cnblogs.com/shanyou/p/3918178.html 本来微软已经帮我们将授权.认证以及数据库存储 ...

  8. 介绍 ASP.NET Identity - ASP.NET 应用程序的成员身份认证系统

    ASP.NET Identity 是构建 ASP.NET web 应用程序的一种新的身份认证系统.ASP.NET Identity 可以让您的应用程序拥有登录功能,并可以轻松地自定义登录用户的相关数据 ...

  9. ABP源码分析四十二:ZERO的身份认证

    ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展.同时重写了ABP核心模块中的permission功能,以实现 ...

随机推荐

  1. JS闭包和引用

    简介 Javascript 中一个最重要的特性就是闭包的使用.因为闭包的使用,当前作用域总可以访问外部的作用域.因为Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关 ...

  2. 利用火车头采集A67手机电影教程一

    今天将讲述:利用火车头采集A67手机电影,并导入到网站中,如果你要更多更快的教程,请访问:http://www.it28.cn/category-191.html 现在以A67中的电影中的动作片为例: ...

  3. ArcGIS Server Rest 认证过程分析

    1. http://192.168.1.220:6080/arcgis/admin/login?redirect= Request URL: http://192.168.1.220:6080/arc ...

  4. MVC与单元测试实践之健身网站(六)-计划的添加与重置

    健身计划需要使用者自己定制,没有现成的内容可供选择.本篇就是关于健身计划的添加与重置功能的一部分. 一 功能描述 a) 关于计划的定制,决定以周期的方式,比如有人会以一周为周期,然后安排每周的1.3. ...

  5. 移动端不利用HTML5和echarts开发一样可以实现大数据展示及炫酷统计系统(产品技术综合)

    一.由于项目需要进行手机看板展示设计及开发展示效果图如下:

  6. JAVA学习笔记:注释、变量的声明和定义、

    本文内容: 注释 变量的声明和定义 成员变量和局部变量 首发时间:2018-03-16 15:59 注释: 单行注释:// 多行注释:/* - */ 变量: 变量是内存中的一个存储区域,变量的定义就是 ...

  7. [20180730]exadata与行链接.txt

    [20180730]exadata与行链接.txt --//最近一段时间在看<expert oracle exadata>,智能扫描的三大优化方法是:字段投影,谓词过滤,存储索引.大多数智 ...

  8. [20180705]关于hash join 2.txt

    [20180705]关于hash join 2.txt --//昨天优化sql语句,执行计划hash join right sna,加入一个约束设置XX字段not null,逻辑读从上万下降到50.- ...

  9. ASP.NET Boilerplate 学习

    1.在http://www.aspnetboilerplate.com/Templates 网站下载ABP模版 2.解压后打开解决方案,解决方案目录: 3.在AbpTest.Web.Host项目的ap ...

  10. .net core HttpContext(Http上下文)

    在.NET Core中,只有Controller才能直接使用 HttpContext ,其他地方需要通过HttpContextAccessor来访问