Identity 3 SignInManager.PasswordSignInAsync() 不返回任何结果

2024-04-16

我正在使用 Identity 3.0 创建 Web 应用程序,但 SignInManager PasswordSignInAsync() 方法有问题。我像在文档中一样使用它,但它不会返回任何内容(应用程序代码就停在那里) 这是我的控制器代码:

 public class AppController : Controller
{
    private IAccountService _service;
    private readonly SignInManager<User> _signInManager;
    private UserManager<User> _userManager;

    public AppController(IAccountService service, SignInManager<User> signInManager, UserManager<User> userManager)
    {
        _service = service;
        _signInManager = signInManager;
        _userManager = userManager;
    }

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);
            var password = await _userManager.CheckPasswordAsync(user, model.Password);

            var result = await _signInManager.PasswordSignInAsync(
                model.Email,
                model.Password,
                model.RememberMe,
                lockoutOnFailure: false);

            if (result.Succeeded)
            {
                return RedirectToAction(nameof(EmployeeController.Contact), "Employee");
            }
            if (result.IsLockedOut)
            {
                return View("Lockout");
            }
            if(result.IsNotAllowed)
            {
                return View("Not Allowed");
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return View(model);
            }
        }
        return View(model);
    }
}

以及startup.cs文件中的配置:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddCaching();
        services.AddSession(options => {
            options.IdleTimeout = TimeSpan.FromMinutes(30);
            options.CookieName = ".MyApplication";
        });

        services.AddEntityFramework()
        .AddSqlServer()
        .AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration["Data:DbContextConnection"]));


        services.AddIdentity<User, UserRole>(config => 
            {
                config.User.RequireUniqueEmail = true;
                config.Password.RequiredLength = 8;
                config.Cookies.ApplicationCookie.LoginPath = "/App/Login";
                config.SignIn.RequireConfirmedEmail = false;
                config.SignIn.RequireConfirmedPhoneNumber = false;
            })
        .AddEntityFrameworkStores<ApplicationDbContext,string>()
        .AddDefaultTokenProviders();

        services.AddTransient<IAccountService, AccountService>();
    }

public void Configure(IApplicationBuilder app)
    {
        app.UseStaticFiles();

        app.UseSession();

        app.UseIdentity();
        app.UseMvc(config =>
        {
            config.MapRoute(
                name: "Default",
                template: "{controller}/{action}/{id?}",
                defaults: new { controller = "App", action = "Index" }
                );
        });
    }

谢谢你的帮助


The 'PasswordSignInAsync()'方法不能采取'型号.电子邮件'作为第一个参数, 它可以使用用户名检查用户。方法如下:

 public virtual Task<SignInStatus> PasswordSignInAsync(
    string userName,
    string password,
    bool isPersistent,
    bool shouldLockout) 



如果您想检查电子邮件,您可以使用登录异步()方法,但那是在检查是否检查密码异步()是真的 这是你可能做的:

var user = await _userManager.FindByEmailAsync(model.Email);
var password = await _userManager.CheckPasswordAsync(user, model.Password);

if(password)
{
   var result = await _signInManager.SignInAsync(
                    model.Email,
                    model.Password,
                    model.RememberMe);
     if (result.Succeeded)
     {
          return RedirectToAction(nameof(EmployeeController.Contact), "Employee");
     }
}


但现在您将无法检查 lockoutOnFailure 因为登录异步()不支持这个论点,要检查它,你必须制定另一个显式方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Identity 3 SignInManager.PasswordSignInAsync() 不返回任何结果 的相关文章

随机推荐

  • MVC 3 列表的不引人注目的验证

    Question 我创建了一个服务器端属性级别验证属性 但我没有将其应用于单个字段 而是将其应用于列表 这使我能够从整体上验证模型 我现在需要知道如何使用 MVC 3 中内置的不显眼的客户端验证将其转换为工作 我当前的代码如下来说明我的问题
  • div背景图片+jquery的幻灯片

    我在标题处有一个大的 div 元素 div 中有很多文本内容和一些框 我有一个大的 img 作为这个 div 的背景 现在我需要为这个 div 的背景制作一个幻灯片 如何为 div 的背景图像制作幻灯片 我研究了很多 但找不到任何东西 多谢
  • Bash if 语句中何时需要方括号?

    通常 我在 if 语句中使用方括号 if name Bob then 但是 当我检查是否grep成功了我不使用方括号 if grep q text file then 什么时候需要方括号if陈述 方括号是同义词test命令 一个if语句检查
  • 分层代码优先 EF 绑定到 WPF Treeview...不可能

    在过去 我不得不求助于使用数据集和数据表 因为使用绑定来做到这一点仍然让我困惑 顶层 我在 VB 2012 中创建了一系列类 对它们进行了注释 并使用 Code First 在 EF6 中创建了 EF 模型 这个想法是表示路由器配置 配置的
  • 随机值生成 JavaScript

    我有一些代码用于将数组中的随机值存储到变量中 如下所示 Quest value1 value2 value3 value4 var random Math floor Math random Quest length var questio
  • 将控制台窗口添加到 ASP.NET Core 应用程序

    我有一个 ASP NET Core 2 0 应用程序在 NET Core 2 0 中的 Windows 上运行 命令行 C Program Files dotnet dotnet exe 执行 C Users zippy documents
  • 如何在 mysql 查询中将行放在顶部。

    您好 我的 SQL 表中有 100 条记录 我想按名称对它们进行 ASC 排序 但我需要在所有记录 nr 43 之上添加一条记录 有没有办法我可以先拉出这个记录 43 然后再按名称按 ASC 顺序排列其他所有内容 技巧是在一个查询中完成它
  • SSL 会话票证与会话 ID

    为了提高不保留 短 连接的 SSL 握手性能 有两个广为人知的独立功能 TLS 会话 ID TLS 会话票证 如果有很多短连接会话 就性能开销而言 哪种机制更可取并且应该使用 我知道服务器需要缓存会话 ID 并且在负载平衡的情况下会话票证也
  • 不在 In SQL 语句中?

    我在Excel中有一组大约5000个ID 在表中我有大约30000个ID 如果我在SQL语句中使用 In 条件 我将从Excel中拥有的ID中获得大约4300个ID 但是如果我将 Not In 与 Excel id 一起使用 我已经获得了大
  • node.js axios 下载文件流和 writeFile

    我想下载一个 pdf 文件axios并保存在磁盘 服务器端 上fs writeFile 我努力了 axios get https xxx my pdf responseType blob then response gt fs writeF
  • 四元数到欧拉角算法 - 如何转换为“Y = Up”和旋手性之间的转换?

    我有一个在四元数和欧拉角之间转换的算法 public static Vector3 ToEulerAngles this Quaternion q Store the Euler angles in radians Vector3 pitc
  • 在不同的数据集上运行经过训练的机器学习模型

    我是机器学习的新手 正在尝试在另一个相同格式的数据集上运行一个简单的分类模型 该模型是我使用 pickle 训练和保存的 我有以下 python 代码 Code Training set features pd read csv Data
  • 从 std::string 中提取(第一个)UTF-8 字符

    我需要使用一个PHP mb strtoupper 函数的 C 实现 http www zedwood com article cpp utf8 mb strtoupper function模仿维基百科的行为 我的问题是 我只想喂一个sing
  • 如何在 Android Canvas 上使用大量图元绘制游戏

    我在游戏的每一帧中画了很多线条矩形 这是老式手持电子游戏的娱乐 那些具有用于主游戏的原始点阵显示和用于文本或某些图像的自定义图像的内容 我在虚拟点阵屏幕上有 20x20 大 像素 我还在屏幕上绘制了一些 7 段显示和其他一些东西 根据Tra
  • 更改“corrplot()”中有意义的 pch 符号的位置?

    下面的脚本生成一个图 其中表示重要性的 pch 符号与 r 值重叠 如何移动 pch 符号的位置以使它们不与这些值重叠 library corrplot ex mat lt matrix c 1 00 0 46 0 75 1 00 0 46
  • Fluent NHibernate BinaryBlobType

    今天我正在研究 MySQL 数据库 我不知道如何将 Byte 映射到 BLOB 列 我的表看起来是这样的 CREATE TABLE images Id INT NOT NULL AUTO INCREMENT imgText VARCHAR
  • 函数数组的替代方案?

    我正在编写一个应用程序 php 它需要一个很长的列表相似但不同的功能 由一组按键调用 functions do this gt function does this do that gt function does that etc 我选择
  • 使用 Java API 制作 ePub

    我对 ePub 格式比较陌生 但如果我理解得很好 以编程方式从 XHTML 或 PDF 内容开始制作 ePub 可能意味着 选择 HTML 或 XHTML 内容并使用 XHTML 验证器验证它们 或使用 Tydy 清理它们 选择要插入 eP
  • 在 jQuery datepicker buttonImage 属性中引用 Bootstrap 图标?

    我应该为 jQuery 日期选择器使用什么值buttonImage属性 我想将 Bootstrap 日历图标与 jQuery 日期选择器一起使用 当像这样引用时 我可以在 html 页面中使用图标图像 i class icon calend
  • Identity 3 SignInManager.PasswordSignInAsync() 不返回任何结果

    我正在使用 Identity 3 0 创建 Web 应用程序 但 SignInManager PasswordSignInAsync 方法有问题 我像在文档中一样使用它 但它不会返回任何内容 应用程序代码就停在那里 这是我的控制器代码 pu