當使用新的AddJwtBearer時,我無法使任何示例工作。我有授權歸於一個HomeController的:當使用.NET Core 2的AddJwtBearer時,授權屬性不會重定向到登錄頁面
[Authorize]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
我嘗試新的ASP.NET核心AddJwtBearer,我有這樣的代碼在ConfigureServices只是services.AddMvc()之前:
services.AddAuthentication(opts =>
{
opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
opts.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(opts =>
{
opts.RequireHttpsMetadata = false;
opts.SaveToken = true;
opts.TokenValidationParameters = new TokenValidationParameters()
{
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("mysupersecretkey")),
ValidIssuer = "issuer,
ValidAudience = "audience",
ValidateIssuerSigningKey = true,
ValidateLifetime = true,
};
});
和在啓動時配置方法,我只是app.UseMvc()之前有這個
app.UseAuthentication();
,我希望它重定向到登錄頁面(不具有授權的屬性),所以我可以進入用戶N ame和密碼,然後創建一個令牌以供成功使用,但我總是被重定向到一個空白頁面。
我試着用郵差導航首頁/指數,身體是空的,並在標題有:
WWW-Authenticate →Bearer error="invalid_token", error_description="The token is expired"
如果我使用Cookie身份驗證,它重定向到登錄頁面。在之前的版本(UseJwtBearerAuthentication)中,這個重定向允許我輸入密碼並獲得令牌。
我是否期待錯誤的行爲,或者我錯過了什麼?
謝謝,根據我的理解,我應該根據回覆重新定向自己。關於您的聲明的一個問題「調用API時主要使用JWT承載令牌」:JWT是否也使用了我想要使用它們的方式,而不是調用API,而是從控制器調用Action Methodods? –
你的意思是從同一個應用程序調用一個動作?在這種情況下,將邏輯移至服務層並調用相同的服務層會更好。如果你的意思是在另一個應用程序中的行爲,那麼是的,這將是一個典型的用於像JWT這樣的令牌的用例。 – juunas