久久久久久久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片免费| www.五月婷婷.com| 91视频一区二区 | 成年人精品视频 | 超级乱淫av片免费播放 | 久久91精品国产一区二区三区 | 亚洲一区二区av | 成人免费看黄网站在线观看 | 国产成人精品一区二区三区网站观看 | 亚洲免费片| www国产精品 | 国产精品久久久久久吹潮日韩动画 | 国产激情一区二区三区 | 日日操夜夜操天天操 | 国产在线观 | 国产精品日产欧美久久久久 | 欧美成人在线影院 | 欧美91 | 精品国产乱码一区二区三区a | 99精品国产一区二区青青牛奶 | 日韩久久久久久久 | 亚洲美女在线一区 | 日韩在线免费视频 | 天天久久| 91黄色免费看 | 国产成人精品a视频一区www | 亚洲成网站 |