久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  • <legend id='9nrpJ'><style id='9nrpJ'><dir id='9nrpJ'><q id='9nrpJ'></q></dir></style></legend>

      <tfoot id='9nrpJ'></tfoot>
        <bdo id='9nrpJ'></bdo><ul id='9nrpJ'></ul>
    1. <small id='9nrpJ'></small><noframes id='9nrpJ'>

      <i id='9nrpJ'><tr id='9nrpJ'><dt id='9nrpJ'><q id='9nrpJ'><span id='9nrpJ'><b id='9nrpJ'><form id='9nrpJ'><ins id='9nrpJ'></ins><ul id='9nrpJ'></ul><sub id='9nrpJ'></sub></form><legend id='9nrpJ'></legend><bdo id='9nrpJ'><pre id='9nrpJ'><center id='9nrpJ'></center></pre></bdo></b><th id='9nrpJ'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='9nrpJ'><tfoot id='9nrpJ'></tfoot><dl id='9nrpJ'><fieldset id='9nrpJ'></fieldset></dl></div>

      1. ASP.NET Core 5.0 JWT 身份驗證總是拋出 HTTP 401 代碼

        ASP.NET Core 5.0 JWT authentication is always throws HTTP 401 code(ASP.NET Core 5.0 JWT 身份驗證總是拋出 HTTP 401 代碼)

        <small id='YfUqD'></small><noframes id='YfUqD'>

          <i id='YfUqD'><tr id='YfUqD'><dt id='YfUqD'><q id='YfUqD'><span id='YfUqD'><b id='YfUqD'><form id='YfUqD'><ins id='YfUqD'></ins><ul id='YfUqD'></ul><sub id='YfUqD'></sub></form><legend id='YfUqD'></legend><bdo id='YfUqD'><pre id='YfUqD'><center id='YfUqD'></center></pre></bdo></b><th id='YfUqD'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='YfUqD'><tfoot id='YfUqD'></tfoot><dl id='YfUqD'><fieldset id='YfUqD'></fieldset></dl></div>
            <tbody id='YfUqD'></tbody>
          • <bdo id='YfUqD'></bdo><ul id='YfUqD'></ul>
            <tfoot id='YfUqD'></tfoot>

              1. <legend id='YfUqD'><style id='YfUqD'><dir id='YfUqD'><q id='YfUqD'></q></dir></style></legend>

                  本文介紹了ASP.NET Core 5.0 JWT 身份驗證總是拋出 HTTP 401 代碼的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  限時送ChatGPT賬號..

                  我想在 ASP.NET Core 中實現基于 JWT 的安全性.我現在要做的就是讀取按鈕 @Html.ActionLink(Test",Oper",Home") 中的令牌,授權標頭并驗證它們違背我的標準.我不知道錯過了什么,但它總是返回 HTTP 401 代碼.

                  I want to implement JWT-based security in ASP.NET Core. All I want it to do, for now, is to read tokens in the button @Html.ActionLink("Test","Oper","Home") , authorize header and validate them against my criteria. I don't know what missed but it is always returning HTTP 401 code.

                  文件HomeController.cs

                          private string GenerateJSONWebToken(UserPaul userinfo)
                          {
                              var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
                              var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
                              var claims = new[]
                              {
                                  new Claim(JwtRegisteredClaimNames.Sub,userinfo.Username),
                                  new Claim(JwtRegisteredClaimNames.Email,userinfo.Email),
                                  new Claim(JwtRegisteredClaimNames.Jti,Guid.NewGuid().ToString()),
                              };
                              var token = new JwtSecurityToken(
                                  issuer: _config["Jwt:Issuer"],
                                  audience: _config["Jwt:Issuer"],
                                  claims,
                                  expires: DateTime.Now.AddMinutes(10),
                                  signingCredentials: credentials
                                  );
                              var encodetoken = new JwtSecurityTokenHandler().WriteToken(token);
                              var cookieOptions = new CookieOptions();         
                              cookieOptions.HttpOnly = true;
                              cookieOptions.Expires = DateTime.Now.AddMinutes(1);
                              //cookieOptions.Domain = Request.Host.Value;
                              cookieOptions.Path = "/";
                              Response.Cookies.Append("jwt", encodetoken, cookieOptions);
                              return encodetoken;
                          }
                          [HttpPost]
                          public IActionResult Login()
                          {
                              string AccountNumber="TestUser";
                              JWTtokenMVC.Models.TestContext userQuery = new JWTtokenMVC.Models.TestContext();
                              var query = userQuery.Testxxxx.Where(N => N.UserId ==AccountNumber).FirstOrDefault();
                              IActionResult response = Unauthorized();
                              if (query != null)
                              {
                                  var tokenStr = GenerateJSONWebToken(query);
                                  response = Ok(new { token = tokenStr });
                              }
                              return response;
                          }
                  
                          [Authorize]
                          [HttpGet("Home/Oper")]
                          public IActionResult Oper()
                          {
                              var authenticationCookieName = "jwt";
                              var cookie = HttpContext.Request.Cookies[authenticationCookieName];
                              List<Test_SHOW> sHOWs = new List<Test_SHOW>();
                              JWTtokenMVC.Models.Test.TestContext userQuery= new JWTtokenMVC.Models.Test.TestContext();
                              var query = userQuery.Test.Select(T => new Test_SHOW
                              {number= T.number,name= T.name,mail= T.mail}).OrderBy(o => o.Iid);
                              sHOWs.AddRange(query);
                  
                              return View("Views/Home/Oper.cshtml", sHOWs);
                   
                          }
                  
                  

                  這是 Startup.cs 代碼

                  using System;
                  using System.Collections.Generic;
                  using System.Linq;
                  using System.Threading.Tasks;
                  using Microsoft.AspNetCore.Builder;
                  using Microsoft.AspNetCore.Hosting;
                  using Microsoft.AspNetCore.HttpsPolicy;
                  using Microsoft.Extensions.Configuration;
                  using Microsoft.Extensions.DependencyInjection;
                  using Microsoft.Extensions.Hosting;
                  using Microsoft.Extensions.FileProviders;
                  using System.IO;
                  using Microsoft.IdentityModel.Tokens;
                  using System.Text;
                  using Microsoft.AspNetCore.Authentication.JwtBearer;
                  
                  namespace JWTtokenMVC
                  {
                      public class Startup
                      {
                          public Startup(IConfiguration configuration)
                          {
                              Configuration = configuration;
                          }
                  
                          public IConfiguration Configuration { get; }
                  
                          // This method gets called by the runtime. Use this method to add services to the container.
                          public void ConfigureServices(IServiceCollection services)
                          {
                              services.AddControllersWithViews();
                              services.AddCors(options =>
                              {
                                  options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials().Build());
                              });
                  
                              services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                              .AddJwtBearer(options =>
                              {
                                  options.IncludeErrorDetails = true;
                                  options.TokenValidationParameters = new TokenValidationParameters
                                  {
                  
                  NameClaimType ="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
                                     
                  RoleClaimType = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
                                      ValidateIssuer = true,
                                      ValidateAudience = false,
                                      ValidateLifetime = true,
                                      ValidateIssuerSigningKey = true,
                                      ValidIssuer = Configuration["Jwt:Issuer"],
                                      ValidAudience = Configuration["Jwt:Issuer"],
                                      IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])
                  
                                      )
                                  };
                  
                              });
                          }
                  
                          // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
                          public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
                          {
                              if (env.IsDevelopment())
                              {
                                  app.UseDeveloperExceptionPage();
                              }
                              else
                              {
                                  app.UseExceptionHandler("/Home/Error");
                                  // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                                  app.UseHsts();
                              }
                              app.UseHttpsRedirection();
                              app.UseStaticFiles();
                              app.UseStaticFiles(new StaticFileOptions
                              {
                                  FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "node_modules")),
                                  RequestPath = "/" + "node_modules"
                              });
                              app.UseCookiePolicy();
                  
                              app.UseRouting();
                              app.UseAuthentication();
                  
                              app.UseAuthorization();
                  
                              app.UseEndpoints(endpoints =>
                              {
                                  endpoints.MapControllerRoute(
                                      name: "default",
                                      pattern: "{controller=Home}/{action=Index}/{id?}");
                              });
                          }
                      }
                  }
                  
                  

                  Startup.cs 圖片

                  Startup.cs image

                  Startup.cs 添加 UseAuthentication

                  Startup.cs Add UseAuthentication

                  推薦答案

                  所以我假設您正在嘗試使用 Angular 項目的 asp.net core.我認為您錯過了將客戶端 URL 添加到您的 .net core 項目.AddCors對 IServiceCollection 的擴展調用只是注冊了所有需要的服務,但它沒有將 Cors 中間件添加到 HTTP 請求管道中.所以添加此代碼 app.UseCors(x => x.AllowAnyHeader().AllowAnyMethod().WithOrigins("https://localhost:4200")); 在您的 Configure 方法中.我認為它可以解決您的問題.

                  So I assume you are trying asp.net core with an angular project.I think you are missed adding your client-side URL to your .net core project. AddCorson extension call for IServiceCollection just registers all required services, but it does not add Cors middleware to the HTTP request pipeline.So add this code app.UseCors(x => x.AllowAnyHeader().AllowAnyMethod().WithOrigins("https://localhost:4200")); in your Configure method.i think it's resolve your issue.

                  
                   public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
                          {
                              if (env.IsDevelopment())
                              {
                                  //clarify code
                                
                              }
                              else{  
                  
                                 //clarify code    
                  
                              }
                              
                  
                              app.UseHttpsRedirection();
                  
                              app.UseRouting();
                  
                              app.UseCors(x => 
                    x.AllowAnyHeader().AllowAnyMethod().WithOrigins("https://localhost:4200")); //your  client side URL.you are missing this unfortunately
                  
                              app.UseAuthentication();
                  
                              app.UseAuthorization();
                  
                             //clarify code
                          }
                  
                  

                  更新

                  安裝Microsoft.AspNetCore.Cors

                  只需刪除 AllowCredentials() 即可解決您的問題.

                  Just remove AllowCredentials() and it's will fix your issue.

                  這篇關于ASP.NET Core 5.0 JWT 身份驗證總是拋出 HTTP 401 代碼的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  What are good algorithms for vehicle license plate detection?(車牌檢測有哪些好的算法?)
                  onClick event for Image in Unity(Unity中圖像的onClick事件)
                  Running Total C#(運行總 C#)
                  Deleting a directory when clicked on a hyperlink with JAvascript.ASP.NET C#(單擊帶有 JAvascript.ASP.NET C# 的超鏈接時刪除目錄)
                  asp.net listview highlight row on click(asp.net listview 在單擊時突出顯示行)
                  Calling A Button OnClick from a function(從函數調用按鈕 OnClick)

                  <small id='U6aBa'></small><noframes id='U6aBa'>

                  1. <tfoot id='U6aBa'></tfoot>
                    • <legend id='U6aBa'><style id='U6aBa'><dir id='U6aBa'><q id='U6aBa'></q></dir></style></legend>

                      <i id='U6aBa'><tr id='U6aBa'><dt id='U6aBa'><q id='U6aBa'><span id='U6aBa'><b id='U6aBa'><form id='U6aBa'><ins id='U6aBa'></ins><ul id='U6aBa'></ul><sub id='U6aBa'></sub></form><legend id='U6aBa'></legend><bdo id='U6aBa'><pre id='U6aBa'><center id='U6aBa'></center></pre></bdo></b><th id='U6aBa'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='U6aBa'><tfoot id='U6aBa'></tfoot><dl id='U6aBa'><fieldset id='U6aBa'></fieldset></dl></div>
                        <tbody id='U6aBa'></tbody>
                      • <bdo id='U6aBa'></bdo><ul id='U6aBa'></ul>
                            主站蜘蛛池模板: 色天堂视频 | 人人看人人干 | 成人在线视频一区二区三区 | 亚洲成人av| 成人欧美一区二区三区在线播放 | 91精品久久久久久久久久入口 | 国产精品国产成人国产三级 | 亚洲精品一 | www.久久国产精品 | 国产视频1区 | 国产精品1区2区3区 欧美 中文字幕 | 一二三区av| 亚洲激情在线 | 久久久人成影片免费观看 | 免费在线观看黄色av | 午夜精品久久久久久久久久久久久 | 日韩中文字幕在线播放 | 久久99精品久久久久久青青日本 | 日本一二三区在线观看 | 水蜜桃久久夜色精品一区 | 99re热精品视频 | 99视频在线免费观看 | 国产欧美日韩一区二区三区在线 | 韩国av网站在线观看 | 国产精品久久久久一区二区三区 | 欧美精品91爱爱 | 欧美日韩在线一区二区三区 | 亚洲精品乱码久久久久久按摩 | 成人免费淫片aa视频免费 | 黄在线 | 国产日韩欧美一区二区 | 久久精品视频播放 | 国产九一精品 | 午夜一级做a爰片久久毛片 精品综合 | 天堂av在线影院 | 日韩激情视频一区 | 亚洲av毛片成人精品 | 精品亚洲一区二区 | 看av片网站 | 亚洲精品久久久久久久不卡四虎 | 一级a性色生活片久久毛片 一级特黄a大片 |