当前位置: 首页 > news >正文

潍坊+网站建设网站建设技术文案

潍坊+网站建设,网站建设技术文案,plc编程入门基础知识,黄冈地区免费网站推广平台前言 在 ASP.NET Core 中#xff0c;仍然沿用了 ASP.NET里面的 Identity 组件库#xff0c;负责对用户的身份进行认证#xff0c;总体来说的话#xff0c;没有MVC 5 里面那么复杂#xff0c;因为在MVC 5里面引入了OWIN的东西#xff0c;所以很多初学者在学习来很费劲仍然沿用了 ASP.NET里面的 Identity 组件库负责对用户的身份进行认证总体来说的话没有MVC 5 里面那么复杂因为在MVC 5里面引入了OWIN的东西所以很多初学者在学习来很费劲对于 Identity 都是一头雾水包括我也是曾经在学 identity 这个东西前后花了一个多月来搞懂里面的原理。所以大部分开发者对于 Identity 并没有爱也并没有使用它会觉得被绑架。 值得庆幸的是在 ASP.NET Core 中由于对模块的抽象化逐渐清晰以及中间件的使用这使得 Identity 的学习和使用路线变得更加平易近人下面就让我们一起来看看吧。 Getting Started 在开始之前让我们先忘记它和Entity Framework的关系也忘记它和Authentication的关系我们先学习几个英语单词。 有这么几个“单词”你可能需要弄明白 # 1 Claims 大家应该都知道身份证长什么样子的如下 其中姓名奥巴马性别男民族肯尼亚出生1961.08.04等等这些身份信息可以看出都是一个一个的键值对那如果我们想在程序中存这些东西怎么样来设计呢对你可能想到了使用一个字典进行存储一个Key一个Value刚好满足需求。但是KeyValue的话感觉不太友好不太面向对象所以如果我们做成一个对象的话是不是更好一些呢最起码你可以用vs的智能提示了吧我们修改一下改成下面这样 //我给对象取一个名字叫Claim你没有意见吧public class Claim{    public string ClaimType { get; set; }      public string ClaimValue { get; set; } } ClaimType 就是KeyClaimValue就代表一个Value。这样的话刚好可以存储一个键值对。这时候姓名奥巴马是不是可以存进去了。 微软的人很贴心给我们准备了一些默认的ClaimType呢很多常用的都在里面呢一起看看吧 这里延伸第一个知识点ClaimTypes 为了阅读体验截图我只放了一部分哦。可以看到有什么NameEmailGenderMobilePhone等常用的都已经有了其他的还有很多。细心的读者可能注意了它的命名空间是System.Security.Claims那就说明这个东西是.net 框架的一部分嗯我们暂时只需要知道这么多就OK了。 Claim 介绍完毕是不是很简单其他地方怎么翻译我不管在本篇文章里面它叫 “证件单元”。 # 2 ClaimsIdentity 在有了“证件单元”之后我们就用它可以制造一张身份证了那么应该怎么样制造呢有些同学可能已经想到了对就是新建一个对象然后在构造函数里面把身份证单元传输进去然后就得到一张身份证了。我们给这张身份证取一个英文名字叫 “ClaimsIdentity”这个名字看起来还蛮符合的既有 Claims 表示其组成部分又有表示其用途的 Identity身份很满意的一个名字。 实际上在现实生活中我们的身份证有一部分信息是隐藏的有一部分是可以直接看到的。比如新一代的身份证里面存储了你的指纹信息你是看不到的这些都存储在身份证里面的芯片中那能看到的比如姓名啊年龄啊等。我们在设计一个对象的时候也是一样需要暴露出来一些东西那这里我们的 ClaimsIdentity 就暴露出来一个 NameLable等。 我们造的身份证ClaimsIdentity还有一个重要的属性就是类型AuthenticationType等等AuthenticationType是什么东西看起来有点眼熟的样子。我们知道我们自己的身份证是干嘛的吧就是用来证明我们的身份的在你证明身份出示它的时候其实它有很多种形式载体的什么意思呢比如你可以直接拿出实体形式的身份证那也可以是纸张形式的复印件也可以是电子形式的电子码等等这个时候就需要有一个能够表示其存在形式的类型字段对这个AuthenticationType就是干这个事情的。 然后我们在给我们的身份证添加一些润色让其看起来好看比如提供一些方法添加 Claims 的删除 Claims的写到二进制流里面的啊等等最终我们的身份证对象看起来基本上是这样了 public class ClaimsIdentity{    public ClaimsIdentity(IEnumerableClaim claims){}    //名字这么重要当然不能让别人随便改啊所以我不许 set除了我儿子跟我姓所以是 virtual 的public virtual string Name { get; }      public string Label { get; set; }    //这是我的证件类型也很重要同样不许 setpublic virtual string AuthenticationType { get; }    public virtual void AddClaim(Claim claim);    public virtual void RemoveClaim(Claim claim);    public virtual void FindClaim(Claim claim); } 嗯到这里我们的身份证看起来似乎很完美了但是从面向对象的角度来说好像还少了点什么东西 对~还是抽象我们需要抽象出来一个接口来进行一些约束约束什么呢既然作为一个证件那么肯定会涉及到这几个属性信息1、名字。2、类型。3、证件是否合法。反应到接口里面的话就是如下我们给接口取个名字叫“身份(IIdentity)” 这里延伸第二个知识点IIdentity接口。 // 定义证件对象的基本功能。public interface IIdentity{      //证件名称string Name { get; }    // 用于标识证件的载体类型。string AuthenticationType { get; }    //是否是合法的证件。bool IsAuthenticated { get; } } 所以我们的 ClaimsIdentity 最终看起来定义就是这样的了 public class ClaimsIdentity : IIdentity{    //......} ClaimsIdentity 介绍完毕是不是发现也很简单其他地方怎么翻译我不管在本篇文章里面它叫 “身份证”。 # 3 ClaimsPrincipal 有了身份证我们就能证明我就是我了有些时候一个人有很多张身份证你猜这个人是干嘛的 对不是黄牛就是诈骗犯。 但是有些时候一个人还有其他很多种身份你猜这个人是干嘛的这就很正常了对不对比如你可以同时是一名教师母亲商人。如果你想证明你同时有这几种身份的时候你可能需要出示教师证你孩子的出生证法人代表的营业执照证。 在程序中一个身份证不仅仅代表你这个人了而是代表一个身份是证明你自己的主要身份哦。如果一个人还有其他很多种身份这个时候就需要有一个东西载体来携带着这些证件了对吧OK我们给需要携带证件的这个对象取一个贴切点的名字叫“证件当事人ClaimsPrincipal”吧。 以下是 Principal 这个单词在词典给出的解释我用它你应该没意见吧 principal  [prɪnsəpl]  adj. 主要的资本的n. 首长校长资本当事人 这个时候可能有同学会问了是不是应该叫ClaimsIdentityPrincipal比较好呢嗯我也觉得应该叫 ClaimsIdentityPrincipal 可能更好一点或许微软的人偷懒了简写成了ClaimsPrincipal。 知道其功能后代码就很好写了和上面ClaimsIdentity一样的套路 public class ClaimsPrincipal {      //把拥有的证件都给当事人public ClaimsPrincipal(IEnumerableClaimsIdentity identities){}    //当事人的主身份呢public virtual IIdentity Identity { get; }    public virtual IEnumerableClaimsIdentity Identities { get; }    public virtual void AddIdentity(ClaimsIdentity identity);    //为什么没有RemoveIdentity 留给大家思考吧} 当时人看起来也几乎完美了但是我们还需要对其抽象一下抽象哪些东西呢 作为一个当事人你应该有一个主身份吧就是你的身份证咯可能你还会用到角色角色后面会详细介绍这里你知道有这么个东西就行了。 这里延伸第三个知识点IPrincipal 接口。 public interface IPrincipal{      //身份IIdentity Identity { get; }    //在否属于某个角色bool IsInRole(string role); } 然后我们的 证件当事人 看起来应该是这样的 public class ClaimsPrincipal : IPrincipal {   //...} ClaimsPrincipal 介绍完了也很简单吧 其他地方怎么翻译我不管在本篇文章里面它叫 “证件当事人”。 想在我们已经知道了 “证件单元Claims” “身份证ClaimsIdentity” “证件当事人ClaimsPrincipal”并且整理清楚了他们之间的逻辑关系趁热打铁下面这个图是一个identity登入部分的不完全示意图虚线圈出来的部分应该可以看懂了吧 可以看出首先我们在app这边有一些证件单元然后调用ClaimsIdentity把证件单元初始化为一个身份证然后再把身份证交给证件当事人由其保管。 才把 Getting Started 写完发现已经这么长了所以打算写成一个系列了可能3 - 4篇吧。 总结 好了本篇就先介绍到这里在本篇博客中我们学会了几个英文单词并且知道了这些英文单词在程序中是扮演这怎么样一个对象。并且根据图我们知道了这些对象在整个认证系统种处在怎么样一个位置。 我发现如果想把 identity 讲清楚仅仅靠这一篇博客是不够的下一篇我们将对.NET Authentication中间件进行抽丝剥茧直到掌握.NET的整个认证系统后我们再来看一下 Identiy 到底和 Entity Framework 有着怎样的爱恨情仇。 相关文章  .NET Core中的认证管理解析 原文地址http://www.cnblogs.com/savorboard/p/aspnetcore-identity.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.zqtcl.cn/news/642505/

相关文章:

  • 即墨建网站价格商城二次开发
  • 网站排名易下拉教程怎么做网店运营
  • 聊城做网站公司聊城博达海外服务器租用多少钱一年
  • 手机上网站做国外销售都上什么网站
  • 网站建设与管理报告书做电销有什么资料网站
  • 网站建设哪家最好企业商城网站建设方案
  • 舟山市建设工程质量监督站网站网页版微信二维码加载失败
  • 金融网站html5模板给自己家的公司做网站好做吗
  • 新农村建设投诉在哪个网站上海做电缆桥架的公司网站
  • 免费行情100个软件网络优化论文
  • asp.net动态的网站开发个人业务网站带后台
  • 控制网站的大量访问关于实验室建设的英文网站
  • 中国容桂品牌网站建设怎么自己做个网站做链接跳转
  • 安徽省建设工程协会网站昆明官网seo厂家
  • 品牌整合推广搜狗优化好的网站
  • 娄底手机网站制作深圳网站建设怎么做
  • 好的龙岗网站建设附近装修公司电话和地址
  • 网站后台生成文章很慢网络营销毕业设计
  • 如何把资料上传到网站什么叫高端网站定制
  • 郑州企业网站建设团队什么是交换链接
  • 如何建立一个外贸公司网站活动营销的方式有哪些
  • 上海工程造价咨询公司余姚网站seo运营
  • 小加工厂做网站wordpress免费主题破解版
  • 网站打开风险怎么解决企业建设网站网站建设公司
  • 随州网站建设公司wordpress怎样上传主题
  • 做外链等于网站更新么台州椒江网站建设
  • 自己搭建一个博客网站网络营销是什么大类
  • 10元网站备案php企业网站开发实训报告
  • 建筑网站设计大全wordpress模板死循环
  • 网站优化排名软件泌阳网站建设