当前位置: 首页 > 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.zqtcl.cn/news/357874/

相关文章:

  • 安阳汤阴县网站建设下载wix做的网站
  • 福清市建设局网站深圳工业设计协会封昌红
  • 网站建设公司做网站要多少费用重庆找工作哪个网站好
  • 苏州网站建设方法cnzz网站排名是怎么做的
  • 烟台网站建设服务专业的企业智能建站制造厂家
  • 网站信息查询制作闹钟网站
  • 永久免费个人网站申请注册禁止 wordpress ajax
  • 建设网站江西一个简单的游戏网站建设
  • 织梦大气婚纱影楼网站源码优化大师电脑版
  • 衡水企业网站制作报价怎么通过局域网建设网站
  • 服装网站建设课程知道ip怎么查域名
  • 上海政务网站建设上行10m企业光纤做网站
  • 杭州做公司网站aso搜索优化
  • 南京越城建设集团网站网站空间续费多少钱
  • 深圳nft网站开发公司如何制作微信公众号里的小程序
  • 做网站美工要学什么聊城网站建设电话
  • 南通个人网站建设快手秒刷自助网站
  • html5 做网站网站开发找工作
  • 聚成网站建设艺术公司网站定制中心
  • 阿里云上可以做网站吗十六局集团门户网
  • 门户网站建设询价函有哪些网站可以做设计挣钱
  • 如何建立自己网站奔奔网站建设
  • 自由做图网站做网站所用的工具
  • 广西南宁做网站专业网站建设案例
  • 视屏网站的审核是怎么做的群辉 搭建wordpress
  • 嘉兴网站快速排名优化衡阳网站建设制作
  • 建设公共资源交易中心网站成都APP,微网站开发
  • dede网站地图修改厦门百度seo
  • 可以做行程的网站网站详情怎么做的
  • 网站建设心得8000字营销型网站建设的注意事项