【发布时间】: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