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

免费网站建设阿里云开网站赚50万做

免费网站建设阿里云,开网站赚50万做,网站结构是什么 怎么做,html5 网站开发以前在web端的身份认证都是基于Cookie | Session的身份认证, 在没有更多的终端出现之前#xff0c;这样做也没有什么问题#xff0c;但在Web API时代#xff0c;你所需要面对的就不止是浏览器了#xff0c;还有各种客户端#xff0c;这样就有了一个问题#xff0c;这些客… 以前在web端的身份认证都是基于Cookie | Session的身份认证, 在没有更多的终端出现之前这样做也没有什么问题但在Web API时代你所需要面对的就不止是浏览器了还有各种客户端这样就有了一个问题这些客户端是不知道cookie是什么鬼的。 (cookie其实是浏览器搞出来的小猫腻用来保持会话的但HTTP本身是无状态的, 各种客户端能提供的无非也就是HTTP操作的API) 而基于Token的身份认证就是应对这种变化而生的它更开放安全性也更高。 基于Token的身份认证有很多种实现方式但我们这里只使用微软提供的API。 接下来的例子将带领大家完成一个使用微软JwtSecurityTokenHandler完成一个基于beare token的身份认证。 注意这种文章属于Step by step教程跟着做才不至于看晕下载完整代码分析代码结构才有意义。 前期准备 推荐使用VS2015 Update3作为你的IDE下载地址www.visualstudio.com你需要安装.NET Core的运行环境以及开发工具这里提供VS版www.microsoft.com/net/core 创建项目 在VS中新建项目项目类型选择ASP.NET Core Web Application(.NET Core), 输入项目名称为CSTokenBaseAuth Coding 创建一些辅助类在项目根目录下创建一个文件夹Auth,并添加RSAKeyHelper.cs以及TokenAuthOption.cs两个文件在RSAKeyHelper.cs中 using System.Security.Cryptography; namespace CSTokenBaseAuth.Auth {     public class RSAKeyHelper     {         public static RSAParameters GenerateKey()         {             using (var key new RSACryptoServiceProvider(2048))             {                 return key.ExportParameters(true);             }         }     } } 在TokenAuthOption.cs中 using System;using Microsoft.IdentityModel.Tokens;namespace CSTokenBaseAuth.Auth{    public class TokenAuthOption    {        public static string Audience { get; } ExampleAudience;        public static string Issuer { get; } ExampleIssuer;        public static RsaSecurityKey Key { get; } new RsaSecurityKey(RSAKeyHelper.GenerateKey());        public static SigningCredentials SigningCredentials { get; } new SigningCredentials(Key, SecurityAlgorithms.RsaSha256Signature);        public static TimeSpan ExpiresSpan { get; } TimeSpan.FromMinutes(20);    }}Startup.cs在ConfigureServices中添加如下代码services.AddAuthorization(auth {auth.AddPolicy(Bearer, new AuthorizationPolicyBuilder().AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌).RequireAuthenticatedUser().Build()); });完整的代码应该是这样public void ConfigureServices(IServiceCollection services) {    // Add framework services.    services.AddApplicationInsightsTelemetry(Configuration);    // Enable the use of an [Authorize(Bearer)] attribute on methods and classes to protect.services.AddAuthorization(auth {auth.AddPolicy(Bearer, new AuthorizationPolicyBuilder().AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌).RequireAuthenticatedUser().Build());});services.AddMvc(); }在Configure方法中添加如下代码这段代码主要是Handle Error用的比如当身份认证失败的时候会抛出异常而这里就是处理这个异常的。接下来在相同的方法中添加如下代码应用JwtBearerAuthenticationapp.UseJwtBearerAuthentication(new JwtBearerOptions {TokenValidationParameters new TokenValidationParameters {IssuerSigningKey TokenAuthOption.Key,ValidAudience TokenAuthOption.Audience,ValidIssuer TokenAuthOption.Issuer,ValidateIssuerSigningKey true,ValidateLifetime true,ClockSkew TimeSpan.FromMinutes(0)} }); 完整的代码应该是这样在Controllers中新建一个Web API Controller Class命名为TokenAuthController.cs。我们将在这里完成登录授权在同文件下添加两个类分别用来模拟用户模型以及用户存储代码应该是这样public class User {     public Guid ID { get; set; }    public string Username { get; set; }    public string Password { get; set; } }public static class UserStorage {    public static ListUser Users { get; set; } new ListUser {        new User {IDGuid.NewGuid(),Usernameuser1,Password user1psd },        new User {IDGuid.NewGuid(),Usernameuser2,Password user2psd },        new User {IDGuid.NewGuid(),Usernameuser3,Password user3psd }}; }接下来在TokenAuthController.cs中添加如下方法private string GenerateToken(User user, DateTime expires) {      var handler new JwtSecurityTokenHandler();ClaimsIdentity identity new ClaimsIdentity(        new GenericIdentity(user.Username, TokenAuth),        new[] {            new Claim(ID, user.ID.ToString())});    var securityToken handler.CreateToken(new SecurityTokenDescriptor{Issuer TokenAuthOption.Issuer,Audience TokenAuthOption.Audience,SigningCredentials TokenAuthOption.SigningCredentials,Subject identity,Expires expires});    return handler.WriteToken(securityToken); } 该方法仅仅只是生成一个Auth Token,接下来我们来添加另外一个方法来调用它在相同文件中添加如下代码[HttpPost]public string GetAuthToken(User user) {    var existUser UserStorage.Users.FirstOrDefault(u u.Username user.Username u.Password user.Password);    if (existUser ! null){        var requestAt DateTime.Now;        var expiresIn requestAt TokenAuthOption.ExpiresSpan;        var token GenerateToken(existUser, expiresIn);        return JsonConvert.SerializeObject(new {stateCode 1,requertAt requestAt,expiresIn TokenAuthOption.ExpiresSpan.TotalSeconds,accessToken token});}    else{        return JsonConvert.SerializeObject(new { stateCode -1, errors Username or password is invalid });} } 接下来我们来完成授权验证部分在Controllers中新建一个Web API Controller Class命名为ValuesController.cs在其中添加如下代码public string Get() {    var claimsIdentity User.Identity as ClaimsIdentity;  var id claimsIdentity.Claims.FirstOrDefault(c c.Type ID).Value;    return $Hello! {HttpContext.User.Identity.Name}, your ID is:{id}; } 为方法添加装饰属性[HttpGet] [Authorize(Bearer)]完整的文件代码应该是这样using System.Linq;  using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using System.Security.Claims; namespace CSTokenBaseAuth.Controllers{[Route(api/[controller])]    public class ValuesController : Controller{[HttpGet][Authorize(Bearer)]              public string Get(){               var claimsIdentity User.Identity as ClaimsIdentity;      var id claimsIdentity.Claims.FirstOrDefault(c c.Type ID).Value;               return $Hello! {HttpContext.User.Identity.Name}, your ID is:{id};}} }最后让我们来添加视图在Controllers中新建一个Web Controller Class命名为LoginController.cs其中的代码应该是这样using Microsoft.AspNetCore.Mvc; namespace CSTokenBaseAuth.Controllers {[Route([controller]/[action])]      public class LoginController : Controller{    public IActionResult Index()        {            return View();}} } 在项目Views目录下新建一个名为Login的目录并在其中新建一个Index.cshtml文件。代码应该是这个样子html xmlnshttp://www.w3.org/1999/xhtmlheadtitle/title/headbodybutton idgetTokengetToken/buttonbutton idrequestAPIrequestAPI/buttonscript srchttps://code.jquery.com/jquery-3.1.1.min.js/scriptscript$(function () {            var accessToken undefined;$(#getToken).click(function () {$.post(                    /api/TokenAuth,{ Username: user1, Password: user1psd },                    function (data) {console.log(data);                        if (data.stateCode 1){accessToken data.accessToken;$.ajaxSetup({headers: { Authorization: Bearer accessToken }});}},                    json);})$(#requestAPI).click(function () {$.get(/api/Values, {}, function (data) {alert(data);}, text);})})    /script/body/html 最后完整的代码Sample以及运行手册请访问How to achieve a bearer token authentication and authorization in ASP.NET Core 原文地址http://www.cnblogs.com/onecodeonescript/p/6061714.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.zqtcl.cn/news/90166/

相关文章:

  • 青海网站建设公司电话163 com邮箱注册
  • 建设法律法规文本查询网站自由设计师是什么意思
  • 分站城市网站如何做seo上海网站建设选缘魁
  • 荆门网站建设电话如何制作网页链接二维码
  • 邳州微网站开发unsplash素材网站
  • 大型网站技术架构wordpress 换域名
  • 网站建设 首选百川互动织梦网站数据下载
  • pc端网站开发技术网站建设与维护工作内容
  • 凡科怎么建设网站可以做动画的网站
  • 企业网站整合网页界面设计案例赏析
  • 精美网站郑州企业培训
  • 网站备案是一年一次吗百度风云榜小说榜排名
  • 优化网站标题是什么意思wordpress主分类
  • 公司网站开发费计入办公费个人外贸网站建设
  • 阿里云主机可以放几个网站网站建设企划
  • 做玻璃钢的企业网站网站图片要多少像素
  • 药厂网站建设页网站
  • 为了做宣传网站而注册公司网站图片上怎么做弹幕效果
  • 音乐网站整站程序帝国cms做视频网站
  • 光明新区住房和建设局网站91关键词
  • 专业自动化网站建设计算机网络技术就业公司
  • 模板wordpress演示站怎么做海口seo网站推广
  • 平凉公司网站建设高端品牌男装
  • 性价比高的seo网站优化为什么装修公司建议半包
  • 手机网站左右滑动效果网站模板之家
  • 哈尔滨的建设信息网站微网站的好处
  • 网站收费怎么做四川网站推广优化
  • 移动网站尺寸页面升级3秒后自动跳转
  • 网站建设费用高低有什么区别专业建设的基本要素
  • 手机端网站 优帮云外贸网站如何建站