当前位置: 首页 > 知识库问答 >
问题:

SignInAsync有效,但PasswordSignInAsync无效

武晨
2023-03-14

我正在创建一个具有身份的登录和注册。遇到了一个问题,当我注册新帐户时,它用SignInAsync很好地登录,但当我尝试用PasswordSignInAsync从登录页面登录时,它没有成功。

这是我的控制器:

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Register(RegistrationViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new User
            {
                UserName = model.Username,
                Email = model.Email
            };

            if (_userManager != null)
            {
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await _signInManager.SignInAsync(user, isPersistent: false);

                    return RedirectToAction("index", "home");
                }

                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError("", error.Description);
                }
            }
        }
        return View(model);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginViewModel model)
    {
        if (ModelState.IsValid)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, false);

            if (result.Succeeded)
            {
                return RedirectToAction("index", "home");
            }

            ModelState.AddModelError(string.Empty, "Nepavyko prisijungti");

        }

        return View(model);
    }

也许有人知道问题出在哪里?

共有1个答案

邓禄
2023-03-14

嗯,我认为signinasync会发出一个身份验证cookie,但会将身份验证过程委托给另一个组件(您没有在代码中签入该组件)。因此您可能希望检查传递给PasswordSigninAsync的凭据是否正常。

我的意思是,signinasync对用户进行签名,因为它已经通过其他方式进行了身份验证。PasswordSignInAsync尝试使用身份框架对请求的用户进行签名,将用户与提供的密码匹配。

所以问题可能是密码不正确,或者没有正确地颁发给服务器,甚至用户不存在...

 类似资料:
  • 问题内容: 我正在努力了解forEach和map之间的区别。在以下渲染函数中,如果将“ forEach”替换为“ map”,则它将起作用。我不明白为什么它不能与“ forEach”一起使用。两种方法都同时提供{item.id}和{item.text}。那么,为什么在使用“ forEach”时没有设置“ TodoItem”的道具呢? 因此,如果“ forEach”不返回任何信息,那么这也不起作用:

  • 我试图通过PHP实现AAA Cooper的SOAP API。当我将XML请求发送到http://wsportal.aaacooper.com:8188/wsportal20/wsGenEst,它通过邮递员,工作正常,但使用CURL时,它不会返回任何内容 我使用直接url(来自wsdl文件),因为他们的wsdl文件似乎已损坏,并且无法使用:http://wsportal.aaacooper.com:

  • 我把我解锁的Galaxy S3(SGH-T999) 现在,我试图从Windows命令提示符运行,但是,我得到了错误。所以,我首先检查的是我的手机是否真的有根? 于是我尝试了以下几点: 打开命令提示符 null

  • 问题内容: 如上所述,我遇到了@ font-face无法在IE9中显示的问题,尽管它在包括IE8及以下版本的所有其他浏览器中都可以正常显示。此外,在我的计算机上本地查看时,IE9会显示字体,而不会完全显示。 使用的代码是: 任何人都知道为什么会发生这种情况吗? 问题答案: 没有答案,只是确认:我有类似的问题。 字体可以使用IETester和原始浏览器在除IE9之外的所有其他IE版本中使用。更改文档

  • 问题内容: 在包含forEach循环的行上引发了出站异常,但是据我所知,此代码没有错。for循环从char数组的元素0开始,一直循环直到到达最后一个元素…但是当我尝试使用更长的for循环来执行此代码时,即 该代码按预期工作。 为什么在这种情况下for循环起作用,而forEach循环不起作用? 问题答案: 如果您需要在循环中使用索引访问某些内容,请使用for,而不是foreach(已增强)。 现在,

  • 我成功地在我的java/maven eclipse项目上运行cucumber测试。但是,当我添加我的项目做Jenkins我总是得到以下错误"cucumber.runtime.CucumberExc0019:没有发现的功能在[]"。 我在命令行中阅读了Maven中的以下线程设置选项: ...测试在单独的JVM中运行,因此您需要在测试插件配置中指定该系统属性(即pom.xml中的surefire或fa