【Ids4实战】深究配置——用户信息操作篇

(此花无日不春风)

其实IdentityServer4的小项目已经基本完结了,但是我总感觉还是有很多东西没有深入挖掘和研究的,这不,二群里有小伙伴问到了一个常见的问题,因为我去年都见到了,一直没有想过去解决它,花了半个小时研究代码和搜索资料后,基本解决了,分享出来,让更多的人了解,这是一个小品文,不会讲原理,一笔带过,就说说如何操作即可。

1、问题的由来

其实这个问题很简单,我相信任何做过Ids4授权认证的都应该遇到过,其实准确来说是用过微软官方Identity类库的应该遇到过,就是注册的时候,提示强密码策略,奇烦:

相信你一看就能明白,官方默认的密码是强密码策略,要英文,数字,大小写,特殊符号,而且昵称、姓名,还只能是字母和数据,怎么看就不舒服,虽然我也一直坚持了很长时间,那有没有办法修改下呢,还真的有。

其实好的框架就是这样的,有限制就会有配置,这才是好的框架,那关键是如何修改这个配置,其实很简单,这里有两种方案,你任意使用即可。

2、如何修改默认配置

1、AddIdentity 内配置

我就直接上代码了,都有注释:

 services.AddIdentity<ApplicationUser, ApplicationRole>(options =>{options.User = new UserOptions{RequireUniqueEmail = true, //要求Email唯一AllowedUserNameCharacters = null //允许的用户名字符,null表示不限制};options.Password = new PasswordOptions{RequiredLength = 8, //要求密码最小长度,默认是 6 个字符RequireDigit = true, //要求有数字RequiredUniqueChars = 3, //要求至少要出现的字母数RequireLowercase = true, //要求小写字母RequireNonAlphanumeric = false, //要求特殊字符RequireUppercase = false //要求大写字母};options.Lockout = new LockoutOptions{AllowedForNewUsers = true, // 新用户锁定账户DefaultLockoutTimeSpan = TimeSpan.FromHours(1), //锁定时长,默认是 5 分钟MaxFailedAccessAttempts = 3 //登录错误最大尝试次数,默认 5 次};options.SignIn = new SignInOptions{RequireConfirmedEmail = true, //要求激活邮箱RequireConfirmedPhoneNumber = true //要求激活手机号};options.ClaimsIdentity = new ClaimsIdentityOptions{// 这里都是修改相应的Cliams声明的RoleClaimType = "IdentityRole",UserIdClaimType = "IdentityId",SecurityStampClaimType = "SecurityStamp",UserNameClaimType = "IdentityName"};}).AddEntityFrameworkStores<ApplicationDbContext>().AddDefaultTokenProviders();

你要是看不懂,那可就是真的底子太薄了,需要恶补了。

我现在是有以下几个规则:

1、不对用户名进行限制,可以是中文;

2、密码只需要小写英文和数字即可;

3、长度至少是八位;

其他的,我就放开了,这样比较人性化一点,当然,如果你感觉这么配置不好看,也可以用这种方案。

2、单独配置

具体的我就不解释了,和上边的都一样,只不过是单独拎出来了:

  services.Configure<IdentityOptions>(options =>{options.Password.RequireDigit = false;options.Password.RequireLowercase = false;options.Password.RequireNonAlphanumeric = false;options.Password.RequireUppercase = false;options.SignIn.RequireConfirmedEmail = false;options.SignIn.RequireConfirmedPhoneNumber = false;options.User.AllowedUserNameCharacters = null;});

3、结果展示

效果还是很明显的,最后也是注册成功:

(登录页)

(昵称显示)

当然,这只是冰山一角,还有很多很多的问题需要挖掘,比如:

1、注册的时候,可以不用密码加密么,或者自定义加密;

2、完整的修改密码流程是什么;

3、如何添加第三方的登录方式;

等等等等。

未来还是有很多路要走,加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题目 1885: [蓝桥杯][2017年第八届真题]分巧克力+二分

题目&#xff1a; 题目描述 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力&#xff0c;其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见&#xff0c;小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克…

Sql Server之旅——第九站 看看DML操作对索引的影响

我们都知道建索引是需要谨慎的&#xff0c;当只有利大于弊的时候才适合建&#xff0c;同时也知道建索引是需要维护成本的&#xff0c;这个维护也就在于DML操作&#xff0c;下面具体看看到底DML对索引都有哪些内幕。。。。一&#xff1a;delete操作现在大家都已经知道索引是以B树…

Coins POJ - 1742(多重背包+是否装满问题)

题意&#xff1a; 给定n种面值的硬币面值分别为WiW_{i}Wi​个数为CiC_{i}Ci​&#xff0c;问用这些硬币可以组成1~m之间的多少面值。 题目&#xff1a; People in Silverland use coins.They have coins of value A1,A2,A3…An Silverland dollar.One day Tony opened his m…

[Java基础]反射获取成员方法并使用

代码如下: package ClassObjectPack01;import ClassObjectPack.Student;import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;public class ReflectDemo05 {public static void main(String[] args)…

副业刚需? 恐怕并不靠谱!

点击蓝字关注&#xff0c;回复“职场进阶”获取职场进阶精品资料一份上一篇文章推了我的星球&#xff0c;两天时间就有接近200位读者加入。有「热心朋友」帮我计算了下&#xff1a;你这两天收入快2万啊&#xff0c;你这副业做的挺好啊。很不客气的说&#xff0c;如果写写公号&a…

Wooden Sticks POJ - 1065(最大上升子序列+动态规划状态转移思维)

题意&#xff1a; 给你n个木棍的长度和重量&#xff0c;让其成为上升序列&#xff0c;如果不能达到&#xff0c;就需要重新一分钟设置。 a&#xff09;第一个木棍的准备时间为1分钟。 b&#xff09;在处理长度为l和重量为w的棒之后&#xff0c;如果l < l’并且w < w’&a…

[Java基础]Junit测试

Junit测试: 代码如下: package CalculatorPack;public class Calculator {public int add(int a,int b){return ab;}public int sub(int a,int b){return a-b;}}package CalculatorPack;import org.junit.Assert; import org.junit.Test;public class CalculatorTest {Testp…

15分钟为自己架设优雅如Github的代码仓库

前言Github大家都熟悉。除了开源的项目外&#xff0c;有时候&#xff0c;大家也会把自己或团队、公司的项目传到Github的私有仓库里&#xff0c;把Github当成自己的私人Git Server。但是&#xff0c;用Github会有一些问题&#xff1a;Github从国内访问不是很稳定&#xff0c;有…

Pseudoprime numbers POJ - 3641(快速幂+判素数)

题意&#xff1a; 给你两个数&#xff0c;p和a&#xff1b;满足两个条件&#xff1a; 1.p不是素数&#xff1b; 2.apa^{p}ap %pa; 满足则输出yes&#xff0c;反之输出no。 题目&#xff1a; Fermat’s theorem states that for any prime number p and for any integer a &g…

[Java基础]反射案列

pro.properties文件(该文件与ReflectTest01同处在同一个文件夹)&#xff1b; className domain.Person methodName eat代码如下: package domain;public class Student {public void sleep(){System.out.println("sleep...");} }package domain;public class Per…

[推荐]大量 Blazor 学习资源(三)

大量 Blazor 学习资源系列文章&#xff1a;[推荐]大量 Blazor 学习资源&#xff08;一&#xff09;[推荐]大量 Blazor 学习资源&#xff08;二&#xff09;这次主要内容有 Blazor 相关视频&#xff0c;因为本身视频是英文的&#xff0c;所以就保持原样了&#xff0c;描述没有翻…

The Water Bowls POJ - 3185(开关问题+暴力)

题意&#xff1a; 给20个水碗。朝上为‘0’或朝下为‘1’&#xff0c;每次操作使三个碗翻转&#xff0c;问使所有20个水碗都朝上&#xff0c;至少翻多少次&#xff1f; 题目&#xff1a; The cows have a line of 20 water bowls from which they drink. The bowls can be e…

基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(二)

上一篇使用HtmlAgilityPack抓取壁纸数据成功将图片存入数据库&#xff0c;本篇继续来完成一个全网各大平台的热点新闻数据的抓取。同样的&#xff0c;可以先预览一下我个人博客中的成品&#xff1a;https://meowv.com/hot ????????????&#xff0c;和抓取壁纸的套路…

Linear world POJ - 2674(弹性碰撞+技巧)

题意&#xff1a; 给你n个居民的起始位置&#xff0c;各自在长度为l的平台&#xff0c;以同样的速度向左或向右走&#xff0c;当碰见时往相反方向走&#xff0c;问最后掉下去的居民花费的时间以及姓名。 题目&#xff1a; The Disc, being flat, has no real horizon. Any a…

TechEmpower Web 框架性能第19轮测试结果正式发布,ASP.NET Core在主流框架中拔得头筹...

TechEmpower第19轮编程语言框架性能排行榜2020年5月28日正式发布,详见官方博客&#xff1a;https://www.techempower.com/blog/2020/05/28/framework-benchmarks-round-19/&#xff0c;TechEmpower基准测试有许多场景&#xff08;也称为测试类型&#xff09;&#xff0c;此次评…

Calendar Game POJ - 1082(关于日历的博弈问题)

题意&#xff1a; 两个人轮流玩游戏&#xff0c;每个人可以把日期进行转移&#xff0c;转移规则&#xff1a; 1.可以转移到当前日期的下一天。 2可以转移到下个月的这一天。&#xff08;但是如果下个月没有这一天就不能进行第二种转移&#xff09; 3.如果A恰好移动到2001.11.4…

[Java基础]JDK内置注解

示例代码如下: package annotation;SuppressWarnings("all") public class AnnoDemo2 {Overridepublic String toString(){return super.toString();}Deprecatedpublic void show(){//有缺陷}public void show1(){//替代show方法}public void demo(){show();}}