如果您使用 ASP.NET Membership,您可以利用 Roles 和 Profile 提供程序并使用 Authorize 属性来限制对发生创建或编辑的实际视图的访问。例如,创建操作可以是:
[Authorize(Roles="Activity Admin")]
public ActionResult CreateActivity()
{
return View();
}
其中“活动管理员”是您的创建者角色。然后您的编辑可能如下所示:
[Authorize(Roles="Activity Admin")]
public ActionResult EditActivity(int id)
{
Activity activity = ActivityRepository.GetActivityByID(id);
if (activity.CreatorID != CurrentUser.ID)
{
return RedirectToAction("Activities");
}
return View(activity);
}
该 if 语句进行检查以确保当前登录的用户是实际创建活动的用户。CurrentUser.UserID 可以替换为您用来检索当前登录用户的唯一 ID 的任何方法。我通常使用 ProfileBase 类来实现一个允许我跟踪当前用户信息的类。下面指向另一个 SO 问题的链接显示了如何做到这一点。
我如何使用 Profilebase 类?