zoukankan      html  css  js  c++  java
  • .Net5 Swagger开启JWT认证

    1、修改Startup.cs文件

    2、中间件件注

      app.UseAuthorization();

    4、效果

     

     5、代码如下:

     1  public void ConfigureServices(IServiceCollection services)
     2         {
     3             services.AddControllers().AddControllersAsServices();
     4             services.AddSwaggerGen(c =>
     5             {
     6                 c.SwaggerDoc("v1", new OpenApiInfo { Title = "LTT.API", Version = "v1" });
     7 
     8                 //Locate the XML file being generated by ASP.NET...
     9                 var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.XML";
    10                 var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    11                 //... and tell Swagger to use those XML comments.
    12                 c.IncludeXmlComments(xmlPath);
    13 
    14                 #region Swagger开启Jwt认证
    15                 //开启权限小锁
    16                 c.OperationFilter<AddResponseHeadersFilter>();
    17                 c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
    18 
    19                 //在header中添加token,传递到后台
    20                 c.OperationFilter<SecurityRequirementsOperationFilter>();
    21                 c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
    22                 {
    23                     Description = "JWT授权(数据将在请求头中进行传递)直接在下面框中输入Bearer {token}(注意两者之间是一个空格) "",
    24                     Name = "Authorization",//jwt默认的参数名称
    25                     In = ParameterLocation.Header,//jwt默认存放Authorization信息的位置(请求头中)
    26                     Type = SecuritySchemeType.ApiKey
    27                 });
    28                 #endregion
    29             });
    30 
    31             //JWT认证
    32             services.AddAuthentication(options =>
    33             {
    34                 options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    35                 options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    36                 options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
    37             }).AddJwtBearer(options =>
    38             {
    39                 options.SaveToken = true;
    40                 options.RequireHttpsMetadata = false;
    41                 options.TokenValidationParameters = new TokenValidationParameters()
    42                 {
    43                     ValidateIssuer = true,
    44                     ValidateAudience = true,
    45                     ValidAudience = "https://www.cnblogs.com/chengtian",
    46                     ValidIssuer = "https://www.cnblogs.com/chengtian",
    47                     IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SecureKeySecureKeySecureKeySecureKeySecureKeySecureKey"))
    48                 };
    49             });
    50         }
    View Code

      对了,授权和认证的注入顺序一定不要错了!!!一定是先认证再授权!相当于先知道你是谁然后再确定你有什么权利!

    感谢:

    https://www.cnblogs.com/shuaichao/p/12376870.html

    https://www.cnblogs.com/laozhang-is-phi/p/9511869.html

  • 相关阅读:
    ASP.NET中常用的优化性能的方法
    把WinDbg集成到Visual Studio中
    提高ASP.net的性能
    Msn Library
    [转帖]OutOfMemoryException问题的处理
    一完美的关于请求的目录不存在而需要url重写的解决方案!
    在 ASP.NET 中执行 URL 重写
    转 内存不断上升处理方法
    IIS 6 通配符应用映射和HttpHandler配置
    Java开源
  • 原文地址:https://www.cnblogs.com/PrintY/p/14312439.html
Copyright © 2011-2022 走看看