我没有很多这方面的经验,我真的希望从你们那里得到一个好的建议。我需要实现以下安全场景,我想知道最好的方法。
想象一下,我们有员工、主管和部门经理。员工和主管都根据他们所属的部门经理分配了 ManagerId。
当主管用户登录时,我希望他只看到与他属于同一 ManagerId 的员工的记录。如果具有另一个 ManagerId 用户的另一个主管登录并在 url 中手动打卡其他员工的信息(例如: wwww.domain.com/employee/details/{id} ),因为他的 ManagerId != 员工的 ManagerId 我希望访问受到限制.
是否有意义 ?
我开始在所有 ActionMethods 上输入检查,例如:
public ActionResult Details(int id)
{
var employee = employeeRepository.Get(id)
var user = (CustomIdentity)ControllerContext.HttpContext.User.Identity;
if(employee.managerId == user.managerId)
{
Do whatever...
}
else
{
Not allowed
}
}
但是在所有 ActionMethods 中输入它似乎是多余的,只是..ehh...我知道必须有更好的方法。