如何防止用户在MVC.NET Web应用程序中编辑除自己以外的其他配置文件?

时间:2009-09-10 00:19:48

标签: c# asp.net-mvc

我们希望阻止其他用户修改其他用户个人资料,仍允许超级用户管理所有个人资料。我不知道这样做的最佳方式,我相信我能做到,我主要是寻找最好的方法或最好的方法。

我考虑在下面的行之前放置一个IF,以便在这种情况下显示该行,但我不认为这是最好的方式,因为其他用户可能会猜测编辑网址如:domain.com/user/编辑/例如。

    <%=Html.ActionLink("Edit", "Edit", new { id=Model.UserID }) %> 

我们正在使用:ASP.NET MVC,SQL数据库和ADO.NET用于数据库。另外:OpenID订阅。

1 个答案:

答案 0 :(得分:3)

您需要在控制器操作中编写一些代码。基本上是这样的:

MembershipUser user = Membership.GetUser();

if (!User.IsInRole("Administrator") && (user.ProviderUserKey != id))
  return View("Unauthorized");

在OpenID的情况下,它的工作方式基本相同。假设这是伪代码:

var user = GetLoggedInUser();

if (!IsAdmin(user) && (user.UserID != id))
  return View("Unauthorized");

其中GetLoggedInUser获取当前用户的用户对象,IsAdmin确定用户对象是否为管理员。