我们希望阻止其他用户修改其他用户个人资料,仍允许超级用户管理所有个人资料。我不知道这样做的最佳方式,我相信我能做到,我主要是寻找最好的方法或最好的方法。
我考虑在下面的行之前放置一个IF,以便在这种情况下显示该行,但我不认为这是最好的方式,因为其他用户可能会猜测编辑网址如:domain.com/user/编辑/例如。
<%=Html.ActionLink("Edit", "Edit", new { id=Model.UserID }) %>
我们正在使用:ASP.NET MVC,SQL数据库和ADO.NET用于数据库。另外:OpenID订阅。
答案 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
确定用户对象是否为管理员。