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

南宁建网站必荐云尚网络网站建设知识平台

南宁建网站必荐云尚网络,网站建设知识平台,工商局网站清算组备案怎么做,网站开发语言市场有率微信公众号#xff1a;趣编程ACE关注可了解.NET日常开发技巧。如需源码#xff0c;请公众号留言 源码;**[如果您觉得本公众号对您有帮助#xff0c;欢迎下方扫码加入群聊]鉴权、授权专题之简易鉴权我记得作为实习生去公司上班的时候#xff0c;领导就直接让我熟悉注册、登录… 微信公众号趣编程ACE关注可了解.NET日常开发技巧。如需源码请公众号留言 源码;**[如果您觉得本公众号对您有帮助欢迎下方扫码加入群聊]鉴权、授权专题之简易鉴权我记得作为实习生去公司上班的时候领导就直接让我熟悉注册、登录逻辑emm 用他的话来说就是这部分跟业务关联性不是很大你先看看。。。登录注册是跟业务逻辑不咋挂钩但是对框架得熟悉呀好吧自此咱就开始了搬砖路咯~安装需要的Nuget包1System.IdentityModel.Tokens.Jwt    2 3Microsoft.AspNetCore.Authentication  4 5Microsoft.AspNetCore.Authentication.JwtBearerSystem.IdentityModel.Tokens.Jwt 包含了用于提供创建、序列化、验证Json Web Token的一些类型Microsoft.AspNetCore.Authentication 一个用来各种身份验证中间件的Asp.Net Core的基本类型Microsoft.AspNetCore.Authentication.JwtBearer 这是一个能接受Token的中间件新建一个基于.Net6 的web api项目前言1public interface IAuthenticate 2{ 3        string Login(string userName,string password); // 包含一个登录方法 4}创建一个IAuthenticate的接口里面包含一个登录方法,接着便创建一个实现类实现Login方法与此同时我们需要将这个接口服务在容器里面依赖注入一下。1public class AuthenticateImpl : IAuthenticate 2{ 3     public string Login(string userName, string password) 4     { 5        ..... 6     }; 7}1// Program.cs 文件里面依赖注入 2builder.Services.AddSingletonIAuthenticate(new AuthenticateImpl(key));我们知道在登录逻辑里面我们需要对传递过来的用户名和密码在数据库里面check一下只有真真实实存在这个用户我们才会创建并分发Token。在这里我为了节省代码模拟一下check逻辑1private readonly IDictionarystring,string users  new Dictionarystring,string 2{ 3     {person1,aaaaa}, 4     {person2,bbbbb}, 5};定义一个用户字典key为用户名value为密码 此处不考虑密码编码加密一切从简。接着开始登录验证。。。。1public string Login(string userName, string password) 2{ 3  // check 用户真实存在  4  if(!users.Any(uu.KeyuserName  u.Valuepassword)) 5  { 6       return null; 7  }  8  // 在验证用户成功后开始创建Token 9}创建Token1public string Login(string userName, string password)2{3            // check 用户真实存在 4   if(!users.Any(uu.KeyuserName  u.Valuepassword))5   {6                return null;7   }8   // 创建Token9   var tokenHandle  new JwtSecurityTokenHandler(); // 实例化一个 JwtSecurityTokenHandler 对象 10   var tokenKey  Encoding.ASCII.GetBytes(_key); 11   var tokenDescriptor  new SecurityTokenDescriptor 12   { 13       Subject  new ClaimsIdentity(new Claim[] 14       { 15                    new Claim(ClaimTypes.Name,userName) 16       }), 17       Expires  DateTime.UtcNow.AddHours(1), 18       SigningCredentials  new SigningCredentials( 19            new SymmetricSecurityKey(tokenKey), 20            SecurityAlgorithms.HmacSha256Signature) 21       }; 22       var token  tokenHandle.CreateToken(tokenDescriptor); 23       return tokenHandle.WriteToken(token); 24}详解  首先我们需要实例化一个JwtSecurityTokenHandler 对象这个对象呢提供了创建Token的方法其中一个就是WriteToken()这个方法此方法入参是一个SecurityToken对象那么如何创建这个SecurityToken对象呢从上述代码的22行可以看出利用CreateToken()这个方法可以实现而这个方法又需要一个SecurityTokenDescriptor对象。所以我们将目光移至11行自此就是一个生成Token的全部过程。开启中间件鉴权1// Asp.net core 内置的鉴权方案2builder.Services.AddAuthentication(x3{4    x.DefaultAuthenticateScheme  JwtBearerDefaults.AuthenticationScheme; // 默认是Bearer 方案5    x.DefaultChallengeScheme  JwtBearerDefaults.AuthenticationScheme;6}).AddJwtBearer(x7{8    x.RequireHttpsMetadata false;9    x.SaveToken true; 10    x.TokenValidationParameters  new TokenValidationParameters 11    { 12        ValidateIssuerSigningKey  true, 13        IssuerSigningKey  new SymmetricSecurityKey(Encoding.ASCII.GetBytes(key)), 14        ValidateIssuer  false, 15        ValidateAudience  false 16    }; 17}); 18 19app.UseAuthentication(); // 使用鉴权接口访问我们在Api控制器上加上[Authorize()]特性这样整个控制器都需要经过token验证除非接口上面有[AllowAnonymous]特性修饰1[Authorize()] 2[ApiController] 3[Route(api/[controller])] 4public class TestJwtController : ControllerBase 5{ 6... 7}对于登录接口1[AllowAnonymous]2[HttpPost(login)]3public IActionResult Login(User user)4{5   // 根据用户名和密码验证用户并生成Token6   var token _authenticate.Login(user?.UserName,user?.Password);7   if(token is null)8   {9     return Unauthorized();  // 返回401 10   } 11   return Ok(token); // 返回token 登录成功 12}
http://www.pierceye.com/news/357874/

相关文章:

  • 高端大气网站模板南京网站制作西安
  • wordpress站点标题和副标题网站内容要突出什么原因
  • 网站建设公司排行杭州wordpress站外链接跳转页面
  • 哪个网站可以做行程攻略哈尔滨市建设工程招标网
  • django网站开发实例望城建设局网站
  • 住房和城乡建设网站方案网页界面设计的网络系统有哪些
  • 自己做的网站怎么设置文件下载商城app搭建
  • 好看的网站分享查域名注册详细信息查询
  • 中山网站建设招聘宜宾seo快速排名
  • 网站制作 福宁网络有限公司单页网站seo优化
  • 增城做网站站长之家域名查询大全
  • 个人网站建设报价做游戏出租的网站好
  • 珠海网站建设公司哪家好织梦网站怎么做下载地址
  • 西安商城网站建设公司宁夏住宅建设发展公司网站
  • 网站建设实现用户登录济南网站建设找老兵
  • 做网站还挣钱吗成都网站设计策划免费
  • 阿里云服务器怎么放网站百度开户渠道商哪里找
  • 网赢天下深圳网站建设建设一个小说网站
  • 北湖区网站建设哪家好什么做网站的公司好
  • 做司法亲子鉴定网站专业设计服务网站
  • 网站建设排序题wordpress菜单左对齐
  • 太原网站建设方案维护北京网站建设东轩seo
  • 网站弹屏广告怎么做的自适应网站建设特点
  • 有一个网站专门做民宿做数据可视化图的网站
  • 手机产品 网站建设网站建设费怎么记账
  • 网站页面设计好了后台如何添加构建平台还是搭建平台
  • 公司展示类网站模板中国校园网站做的比较好的学校
  • 锡山建设局网站白云做网站的公
  • 上海网站制作软件wordpress 访问控制
  • 西部数码助手网站后台管理优秀的包装设计案例