【问题标题】:MVC 6 - How to require password to perform controller action?MVC 6 - 如何要求密码才能执行控制器操作?
【发布时间】:2016-05-07 20:01:13
【问题描述】:

我正在 ASP.net MVC 6 中创建一个员工调度站点。我有一个 employee 表、shift 表和一个 shiftEmployee 表来处理多对多关系。

配置后,每位员工都可以使用其员工 ID 号和密码登录网站。然后他们可以看到他们计划的每个未来班次。他们必须在称为“拉动他们的销钉”的过程中确认每个分配的班次。

到目前为止,一切都按预期工作。我的目标和问题是:

当员工为每个班次拉动他们的密码时,我希望他们必须通过再次输入密码来确认此操作,记住用户已经登录到该站点。完成此任务的最简单/正确/最安全的方法是什么?

Pull GET/POST 方法与标准 MVC 编辑操作基本相同,只是重命名为 Pull。

// GET: PullPin/Pull/5
public IActionResult Pull(int? id)
{
    if (id == null)
    {
        return HttpNotFound();
    }

    var shiftEmp = _context.ShiftEmployees.Single(m => m.ShiftEmployeeID == id);

    if (shiftEmployee == null)
    {
        return HttpNotFound();
    }
}

// POST: PullPin/Pull/5
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Pull(ShiftEmployee shiftEmployee)
{
    var user = GetCurrentUserAsync();

    pullPin.PinStatusID = 3; // Status ID #3 = Pulled

    if (ModelState.IsValid)
    {
        _context.Update(shiftEmployee);
        _context.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(shiftEmployee);
}      

这是我的 ShiftEmployee 课程

public class ShiftEmployee 
{

    public int ShiftEmployeeID { get; set; }
    public int ShiftID { get; set; }
    public int EmployeeID { get; set; }
    public int PinStatusID { get; set; }

    public virtual Shift Shift { get; set; }
    [JsonIgnore]
    public virtual Employee Employee { get; set; }
    public virtual PinStatus PinStatus { get; set; }

}

【问题讨论】:

  • 假设您使用的是 MVC6 模板?这应该意味着你有一个UserManager 对象。在那你可以做UserManager.CheckPasswordAsync(user, password)
  • @DavidG 谢谢你,好先生。这正是我一直在寻找的!如果您想重写您的评论作为答案,我将非常乐意接受它。再次感谢。

标签: c# asp.net asp.net-mvc asp.net-identity asp.net-core-mvc


【解决方案1】:

在标准的 MVC6 模板中,它使用ASP.NET Core Identity 来实现登录功能。该包的一部分是 UserManager 对象(除其他外,您还可以获得 SignInManager。)

UserManager 对象有一个专门用于检查密码的方法,称为CheckPasswordAsync,用法如下:

_userManager.CheckPasswordAsync(user, password)

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多