2017-09-06 181 views
0

我試圖在ASP.NET Core Web API中實現JWT。在JwtBearer的版本1.1.2我有這樣的代碼在我Startup.cs文件:ASP.NET核心 - JwtBearer 2.0.0

public void ConfigureServices(IServiceCollection services) 
{ 
    ... 

    services.Configure<JwtSettings>(Configuration.GetSection("jwt")); 

} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{ 
    ... 
    var jwtSettings = app.ApplicationServices.GetService<JwtSettings>(); 
    app.UseJwtBearerAuthentication(new JwtBearerOptions 
    { 
      AutomaticAuthenticate = true, 
      TokenValidationParameters = new TokenValidationParameters 
      { 
       ValidIssuer = jwtSettings.Issuer; // "http://localhost:5000" 
       ValidateAudience = false, 
       IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)) // some secret Key 
      } 
    }); 

    app.UseMvc(); 
} 

如何這個代碼應該看起來JwtBearer 2.0.0?

我安裝了這個包是這樣的:

dotnet的附加包Microsoft.AspNetCore.Authentication.JwtBearer

我的.NET Core版本:

2.0.0

回答

0

基於上述代碼轉換這對於dotnet核心2.0來說,你需要重構如下...以及根據你的需求進行調整,這是在運輸過程中的快速答案。

public void ConfigureServices(IServiceCollection services) 
{ 
    // ... 
    services.AddAuthentication(options => 
     { 
      options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; 
      options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; 
     }).AddJwtBearer(o => { 
      o.Audience = Configuration.GetSection("jwt:Audience").Value; 
      o.Authority = Configuration.GetSection("jwt:Authority").Value; 
      o.RequireHttpsMetadata = Configuration.GetValue<bool>("jwt:RequireHttps"); 
      o.Events = new JwtBearerEvents() 
      { 
       OnAuthenticationFailed = c => 
       { 
        c.NoResult(); 
        c.Response.StatusCode = 401; 
        return c.Response.WriteAsync("Invalid Token"); 
       } 
      }; 
     }); 
} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     // ... 
     app.UseAuthentication(); 
     // ... 
     app.UseMvc(); 
    } 
0

這可能會爲你工作:

public void ConfigureServices(IServiceCollection services) 

{

 services.Configure<JwtSettings>(Configuration.GetSection("jwt")); 

     var provider = services.BuildServiceProvider();  

     var jwtSettings = provider.GetService<JwtSettings>(); 


     services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) 
      .AddJwtBearer(o => 
      {         
       o.TokenValidationParameters = new TokenValidationParameters 
       {       
        ValidateIssuer = jwtSettings.Issuer; 
        ValidateAudience = false, 
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)) // some secret Key 

       };     

      }); 




} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{ 
.... 

    app.UseAuthentication(); 
    app.UseMvc(); 

}