.net core .net内核-添加带有JWT MVC的API后,登录不再工作
我有一个添加了API的.NETCore2.0应用程序。我正在使用JWT对请求进行身份验证,它工作得很好 回到应用程序的MVC部分后,登录过程似乎不再工作_signInManager.PasswordSignInAsync(…)可以工作,但signInManager.IsSignedIn(用户)(从视图中)为FALSE 这是来自_signInManager.PasswordSignInAsync(…)的结果: ??结果 {成功} IsLockedOut:错误 不允许:错误 RequiresTwoFactor:false 成功:对 用户和声明似乎没有正确设置。以下是他们在登录后的样子(视图中的断点): ??User.identifications.First() {System.Security.Claims.ClaimsIdentity} 演员:空 AuthenticationType:null BootstrapContext:null 索赔:计数=0 CustomSerializationData:空 I验证:错误 标签:空 名称:空 NameClaimType:“ RoleClaimType:“ 我尝试了另一个(新)用户,但结果相同 此外,如果我尝试连接到一个安全页面,我会得到一个401,但不会重定向到登录页面 我有没有打破我的常规?嗯,不知道去哪里找 更新:这可能是我的问题.net core .net内核-添加带有JWT MVC的API后,登录不再工作,.net-core,asp.net-core-mvc,asp.net-apicontroller,.net Core,Asp.net Core Mvc,Asp.net Apicontroller,我有一个添加了API的.NETCore2.0应用程序。我正在使用JWT对请求进行身份验证,它工作得很好 回到应用程序的MVC部分后,登录过程似乎不再工作_signInManager.PasswordSignInAsync(…)可以工作,但signInManager.IsSignedIn(用户)(从视图中)为FALSE 这是来自_signInManager.PasswordSignInAsync(…)的结果: ??结果 {成功} IsLockedOut:错误 不允许:错误 RequiresTwoF
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = "Jwt";
options.DefaultChallengeScheme = "Jwt";
}).AddJwtBearer("Jwt", options => ...
我认为这迫使我的非api控制器寻找尚未提供的JWT令牌。我只需要弄清楚如何在同一个应用程序中同时使用COOKIE和JWT
已尝试将此添加到我的api控制器:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme) ]
当我添加这一点时,我会在API请求上返回一个内部服务器错误,这一行也是这样:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + CookieAuthenticationDefaults.AuthenticationScheme)]
我没有JWT和Cookie认证完全起作用,但我已经克服了这个特殊的问题。。。因此,我将继续回答这个具体问题,然后为下一期打开另一个问题 简短的回答是注释掉ConfigureServices中列出的行
services.AddAuthentication(options =>
{
// options.DefaultAuthenticateScheme = "Jwt";
//options.DefaultChallengeScheme = "Jwt";
})
如果将JWT设置为默认身份验证方案,则会破坏MVC中的cookie方案。一旦我注释掉这些行,登录和cookie认证的其余部分就可以正常工作了
我确实在JWT方面还有一些问题,但我会在另一个问题中解决
我在API控制器中使用它来连接JWT Auth
[Route("API/[controller]/[action]")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]