首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

即使在asp.net核心2.2中使用PasswordSignInAsync成功登录后,User.Identity.IsAuthenticated也始终返回false

在ASP.NET Core 2.2中,即使使用PasswordSignInAsync成功登录后,User.Identity.IsAuthenticated始终返回false的可能原因有以下几点:

  1. 配置问题:请确保在Startup.cs文件的ConfigureServices方法中正确配置了身份验证服务。确保已添加AddAuthentication和AddCookie方法,并指定正确的Cookie名称和登录路径。例如:
代码语言:txt
复制
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.Cookie.Name = "YourCookieName";
        options.LoginPath = "/Account/Login";
    });
  1. 认证中间件顺序问题:在Configure方法中,确保将app.UseAuthentication()和app.UseAuthorization()方法放在app.UseRouting()之后,如下所示:
代码语言:txt
复制
app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

// ...
  1. 登录成功后的重定向问题:在登录成功后,确保将用户重定向到正确的页面,并且在重定向的Action方法中不要忘记调用SignInAsync方法。例如:
代码语言:txt
复制
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model)
{
    if (ModelState.IsValid)
    {
        var result = await _signInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, lockoutOnFailure: false);
        if (result.Succeeded)
        {
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError(string.Empty, "Invalid login attempt.");
        }
    }
    return View(model);
}
  1. 用户认证信息未正确存储:在登录成功后,确保已正确设置用户的认证信息。例如,在上述示例中,可以在登录成功后调用SignInAsync方法来设置用户的认证信息:
代码语言:txt
复制
await _signInManager.SignInAsync(user, isPersistent: false);

如果上述解决方案都没有解决问题,可能需要进一步检查ASP.NET Core 2.2的版本兼容性、依赖项和代码逻辑等方面的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的结果

领券