.net core identity(一)简单运用
1.net core identity涉及到很多知识,很多概念包括Claims,Principal等等概念需要我们一步步学习才能掌握其原理,有两篇博客是比较好的介绍该框架的,
https://segmentfault.com/a/1190000014966349
http://www.cnblogs.com/savorboard/p/aspnetcore-identity.html
2.我在这里先不涉及到上面2篇博客提到的较为高深的内容,而是按照Adam Freeman的.net core mvc中相关代码来做一个小例子
3.首先我们需要明确一个概念是AspNetCore.Identity这一框架是为我们身份认证和权限管理统一做出的抽象,使我们可以通过实现相关接口或方法来完成身份认证的模块,
而不用自己去实现相关繁复的功能.那么下面就进入正题
4.Microsoft.AspNetCore.Identity 命名空间下IdentityUser 为我们定义了用户身份的基类,这里展示一部分属性
public class IdentityUser<TKey> where TKey : IEquatable<TKey>{
public IdentityUser();
public IdentityUser(string userName);
public virtual DateTimeOffset? LockoutEnd { get; set; }
public virtual int AccessFailedCount { get; set; }
public virtual string UserName { get; set; }
public virtual string Email { get; set; }
}
5.我们可以通过实现IdentityUser来使用
public class AppUser: IdentityUser
{
//加入其它属性
}
6.实现IdentityDbContext配置上下文能用到ef的相关功能
public class AppIdentityDbContext: IdentityDbContext<AppUser>
{
//public DbSet<AppUser> appuser
public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options)
: base(options) { }
}
7.Startup启动类配置,
AddIdentity方法指定用户和用户的角色类,我们用我们定义的AppUser 和系统定义的IdentityRoleAddEntityFrameworkStores 用于配置应用Ef哪个上下文来对用户信息做存储AddDefaultTokenProviders用于配置令牌的实现,是cookie还是jwt等等,这一块不熟,最后利用app.UseAuthentication()将identity加入管道中.
下面的一下配置用来配置用户名,邮箱,密码的一些规则,可以不写
services.AddDbContext<AppIdentityDbContext>(options =>
options.UseSqlServer(Configuration["Data:SportStoreIdentity:ConnectionString"]));
services.AddIdentity<AppUser, IdentityRole>(option=> {
//邮箱必须唯一
option.User.RequireUniqueEmail = true;
//用户名只许小写字母拼写
option.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyz";
option.Password.RequiredLength = ;
option.Password.RequireNonAlphanumeric = false;
option.Password.RequireLowercase = false;
option.Password.RequireUppercase = false;
option.Password.RequireDigit = false;
})
.AddEntityFrameworkStores<AppIdentityDbContext>()
.AddDefaultTokenProviders();
public void Configure(IApplicationBuilder app) { app.UseStatusCodePages(); app.UseDeveloperExceptionPage(); app.UseStaticFiles(); app.UseAuthentication(); app.UseMvcWithDefaultRoute();}
8.createModel 和Controller,可以看出UserManager是对用户信息做出管理的一个类,你们可以进入看看有什么方法,最后调用就不用我说了吧
public class CreateModel {
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
public class AdminController : Controller
{
private UserManager<AppUser> userManager;
public AdminController(UserManager<AppUser> usrMgr
{
userManager = usrMgr;
}
public IActionResult Index(){
return View(userManager.Users);
}
public ViewResult Create() => View();
[HttpPost]
public async Task<IActionResult> Create(CreateModel model)
{
if (ModelState.IsValid)
{
AppUser user = new AppUser
{
UserName = model.Name,
Email = model.Email
};
IdentityResult result
= await userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
return RedirectToAction("Index");
}
else
{
foreach (IdentityError error in result.Errors)
{
ModelState.AddModelError("", error.Description);
}
}
}
return View(model);
}
}
9.果然是技术不够,写这么点就有点力不从心,真是羡慕那些长篇大论的大神,这就是我的理解,肯定有欠缺的地方,望大家指正
.net core identity(一)简单运用的更多相关文章
- ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 迁移数据 上一章节中我们配置了 ...
- ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 配置 上一章节我们简单介绍了下 Id ...
- ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 验证特性 上一章节我们简单介绍了 ...
- ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 框架 前面我们使用了 N 多个章节, ...
- ASP.NET Core Identity Hands On(1)——Identity 初次体验
ASP.NET Core Identity是用于构建ASP.NET Core Web应用程序的成员资格系统,包括成员资格.登录和用户数据存储 这是来自于 ASP.NET Core Identity 仓 ...
- ASP.NET Core Identity Hands On(2)——注册、登录、Claim
上一篇文章(ASP.NET Core Identity Hands On(1)--Identity 初次体验)中,我们初识了Identity,并且详细分析了AspNetUsers用户存储表,这篇我们将 ...
- Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验
Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...
- IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity
IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity 原文:http://docs.identityserver.io/en/release ...
- ASP.NET Core Identity 实战(2)——注册、登录、Claim
上一篇文章(ASP.NET Core Identity Hands On(1)--Identity 初次体验)中,我们初识了Identity,并且详细分析了AspNetUsers用户存储表,这篇我们将 ...
随机推荐
- 【JVM】参数配置
[一]JVM参数配置释意 编号 配置项 例子 含义 备注 1 -Xmx -Xmx20m java应用最大可用内存为20M 整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般固 ...
- 芯灵思SINA33开发板怎样创建编译环境
首先在Vmware安装好Centos,在此不再重复步骤,大家可以看以前的帖子有详细的步骤.本节主要介绍如何在Centos 搭建编译环境 Step 1 更新 CentOS 源 CentOS 由于很追求稳 ...
- Creating Node.js Command Line Utilities to Improve Your Workflow
转自:https://developer.telerik.com/featured/creating-node-js-command-line-utilities-improve-workflow/ ...
- 07机器学习实战k-means
K-Means原理初探 K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇.让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大. 如果我们想直接求上式的最 ...
- 让使用SQLite的.NET应用自适应32位/64位系统
如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any CPU”.但是如果应用中使用了SQLite,情况就不同了. SQLite的.NET开发包来自是System.D ...
- day 29 socketsetserver 模块
1.FTP上传/下载服务端/客户端. --------------------------------------------------------------------------------- ...
- vue-cli 2.x 项目优化之:引入本地静态库文件
demo地址:https://github.com/cag2050/vue_cli_optimize_static_resource vue-cli 将静态资源文件放到 static 文件夹下并引用: ...
- “word无法发布此文章”解决
之前用的好好的word发布文章到cnblogs,但是最近不好用了:报错如题. 解决方案: 选择设置tab,然后拉到最下面: 会看到有一个"MetaWeblog访问地址":拷贝下来: ...
- Linux命令之sed
sed命令格式 sed [options] 'command' file(s) 选项 -e :直接在命令行模式上进行sed动作编辑,此为默认选项; -f :将sed的动作写在一个文件内,用–f fil ...
- excel技巧--复制带excel侧边的表格
假设要复制出带excel侧边的表格内容,则使用以下步骤: 1.选择要复制的表格: 2.选择“页面布局”->“标题”选项的“打印”打勾: 3.选择“开始”->复制旁的三角选项:复制为图片: ...