C# 如何防止用户在MVC.NET Web应用程序中编辑除自己之外的其他配置文件?
我们希望防止其他用户编辑其他用户配置文件,同时允许超级用户管理所有配置文件。我不知道最好的方法是什么,我相信我能做到,我主要是在寻找最好的方法或最好的方法 我考虑过在下面的一行前面加一个IF,在这种情况下会显示该行,但我认为这不是最好的方法,因为其他用户可能会猜到编辑url,例如:domain.com/user/edit/5C# 如何防止用户在MVC.NET Web应用程序中编辑除自己之外的其他配置文件?,c#,asp.net-mvc,C#,Asp.net Mvc,我们希望防止其他用户编辑其他用户配置文件,同时允许超级用户管理所有配置文件。我不知道最好的方法是什么,我相信我能做到,我主要是在寻找最好的方法或最好的方法 我考虑过在下面的一行前面加一个IF,在这种情况下会显示该行,但我认为这不是最好的方法,因为其他用户可能会猜到编辑url,例如:domain.com/user/edit/5 <%=Html.ActionLink("Edit", "Edit", new { id=Model.UserID }) %> 我们使用ASP.N
<%=Html.ActionLink("Edit", "Edit", new { id=Model.UserID }) %>
我们使用ASP.NETMVC、SQL数据库和ADO.NET作为数据库。另外:OpenID订阅。您需要在控制器操作中编写一些代码。基本上是这样的:
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
确定用户对象是否为管理员。您需要在控制器操作中编写一些代码。基本上是这样的:
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
确定用户对象是否是管理员。谢谢GalcticCowboy:我想我需要在数据库中实现角色,因为我没有使用ASP.NET成员资格框架。我目前正在使用OpenID。谢谢Hanks GalcticCowboy:我想我需要在数据库中实现角色,因为我没有使用ASP.NET成员框架。我目前正在使用OpenID。谢谢