当使用新的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