C# MVC 6-如何要求密码来执行控制器操作?
我正在ASP.NETMVC6中创建一个员工日程安排网站。我有一个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时,我希望他们必须再次输入密码来确认此操作,同时记住用户已经登录到该站点。实现这一点最简单/正确/最安全的方法是
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谢谢您,先生。这正是我要找的!如果你想重新写下你的评论作为回答,我非常乐意接受。再次感谢。