Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止用户在MVC.NET Web应用程序中编辑除自己之外的其他配置文件?_C#_Asp.net Mvc - Fatal编程技术网

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

C# 如何防止用户在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

我们希望防止其他用户编辑其他用户配置文件,同时允许超级用户管理所有配置文件。我不知道最好的方法是什么,我相信我能做到,我主要是在寻找最好的方法或最好的方法

我考虑过在下面的一行前面加一个IF,在这种情况下会显示该行,但我认为这不是最好的方法,因为其他用户可能会猜到编辑url,例如:domain.com/user/edit/5

    <%=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。谢谢