Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC 6-如何要求密码来执行控制器操作?_C#_Asp.net_Asp.net Mvc_Asp.net Identity_Asp.net Core Mvc - Fatal编程技术网

C# MVC 6-如何要求密码来执行控制器操作?

C# MVC 6-如何要求密码来执行控制器操作?,c#,asp.net,asp.net-mvc,asp.net-identity,asp.net-core-mvc,C#,Asp.net,Asp.net Mvc,Asp.net Identity,Asp.net Core Mvc,我正在ASP.NETMVC6中创建一个员工日程安排网站。我有一个employee表、shift表和一个shiftEmployee表来处理多对多关系 它的配置使每个员工都可以使用其员工ID号和密码登录站点。然后他们可以看到他们计划在未来的每一个班次。他们必须在一个被称为“拉他们的别针”的过程中确认每个指定的班次 到目前为止,一切正常。我的目标和问题是: 当一名员工在每次轮班时提取其pin时,我希望他们必须再次输入密码来确认此操作,同时记住用户已经登录到该站点。实现这一点最简单/正确/最安全的方法是

我正在ASP.NETMVC6中创建一个员工日程安排网站。我有一个
employee
表、
shift
表和一个
shiftEmployee
表来处理多对多关系

它的配置使每个员工都可以使用其员工ID号和密码登录站点。然后他们可以看到他们计划在未来的每一个班次。他们必须在一个被称为“拉他们的别针”的过程中确认每个指定的班次

到目前为止,一切正常。我的目标和问题是:

当一名员工在每次轮班时提取其pin时,我希望他们必须再次输入密码来确认此操作,同时记住用户已经登录到该站点。实现这一点最简单/正确/最安全的方法是什么

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对象(您还可以获得一个
SignInManager

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

_userManager.CheckPasswordAsync(user, password)

假设您使用的是MVC6模板?这意味着您有一个
UserManager
对象。在这一点上,您可以执行
UserManager.CheckPasswordAsync(用户,密码)
@DavidG谢谢您,先生。这正是我要找的!如果你想重新写下你的评论作为回答,我非常乐意接受。再次感谢。