仍然要学习绳索,所以我几乎不懂.Net和C#的基础知识。
在我的许多(但不是全部)控制器中,我使用相同的代码来确定用户是否有效并可以访问页面。
public IActionResult MyPage(string id = null)
{
if (_currentUser == null) {
return RedirectToAction("Error", "Home");
}
// Either the parameter value or a session variable.
id = id ?? _currentUser.UserEmployeeNumber;
Employee employee = _employeeRepository.GetEmployeeById(id);
if (employee == null) {
return RedirectToAction("Error", "Team");
}
if (!_userChecks.IsAllowedAccess(_currentUser.UserEmployeeNumber, id)){
return RedirectToAction("AccessDenied", "Home");
}
// Begin actual page functionality
return View(myPageViewModel);
}
我该如何将其提取出来并使其可重用?最终目标可能类似于:
public IActionResult MyPage(string id = null)
{
DoUserStuff(id);
// Page related functionality
return View(myPageViewModel);
}
我很困惑这个助手方法可能需要返回重定向或id
和employee
,因为这些变量将用于控制器的实际用途。
预先感谢您的建议。
答案 0 :(得分:2)
您要在此处执行的是授权。尝试重构代码的本能很好,但是在这种情况下,您应注意框架为解决此问题提供的便利,并了解如何利用它们。结果不仅是DRYer,而且开始时涉及的代码更少,并且对于其他ASP.NET Core开发人员来说更惯用和熟悉。
这方面的文档相当不错-我按以下顺序建议:
如果您是新手,可以花很多钱,但是投资是值得的。