我按照site将我的网站从ASP.NET Core 1迁移到ASP.NET Core 2。
但是,在执行ASP身份更改后,我的身份验证停止了工作。
我的服务如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(_ => Configuration);
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddResponseCaching();
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
var secretKey = Configuration.GetSection("AppSettings")["SecretKey"];
var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey));
var tokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = signingKey,
ValidateIssuer = true,
ValidIssuer = "arnvanhoutte",
ValidateAudience = true,
ValidAudience = "User",
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero
};
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = tokenValidationParameters;
});
services.AddWebSocketManager();
services.AddMvc();
services.AddTransient<Seed>();
}
我的配置方法底部有app.UseAuthentication();
。
然而,当我在控制器中检查var isAuthenticated = User.Identity.IsAuthenticated;
时,它总是说错误。它之前有用,所以我不明白为什么它会停止工作。
答案 0 :(得分:3)
我在迁移期间遇到了类似的问题
对我而言,登录工作没有任何问题,但后续请求失败,重定向到登录页面而不是抛出401(导致404作为其 一个web api我没有任何登录页面!)。
将defaultauthenticationscheme和DefaultChallengeScheme添加到addauthentication为我做了诀窍。
按如下所示更改addauthentication以使jwt身份验证正常工作!
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.TokenValidationParameters = tokenValidationParameters
});