将某些页面function或用户界面限制为Asp.Net中经过身份validation的用户

我正在使用Asp.Net/C#构建一个应用程序。我正在使用Forms Authentication 。我有一个要求,即我的许多经过authenticated (not anonymous) users被限制为某些页面function或用户界面。我猜Login Control可以仅用于Authenticated vs Anonymous users.So我的问题是,当我知道某些页面组件要从特定的经过身份validation的用户隐藏时,我该怎么办呢。你认为我需要在page_load事件中使用它来隐藏具有此类要求的页面的组件。

 // Is this Tito visiting the page? string userName = User.Identity.Name; if (string.Compare(userName, "Tito", true) == 0) // This is Tito, SHOW the Delete column FilesGrid.Columns[1].Visible = true; else // This is NOT Tito, HIDE the Delete column FilesGrid.Columns[1].Visible = false; 

是否有更好的方法来实现这一点。非常感谢任何帮助。谢谢

在这里,您可以使用Membeship User类和RolePrincipal来分隔用户。

 if(HttpContext.Current.User.IsInRole("Level1")) { FilesGrid.Columns[1].Visible = true; } else { FilesGrid.Columns[1].Visible = false; } 

因此,您将用户设置为不同的成员身份名称,然后向他们显示依赖于成员身份角色的不同控件。

一些链接:

http://msdn.microsoft.com/en-us/library/ff648345.aspx

http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole.aspx

您还需要知道,当您只是隐藏控件时,它的base64编码值仍然存在于视图状态中。 客户端能够阅读它。

客户端还可以读取哪个隐藏控件触发操作。 并没有什么能阻止“智能”客户端触发此操作。

所以:

  • 限制访问值不应该绑定到控件,如果你不想显示它(预渲染不会在不可见的控件上调用。所以在prerender中进行绑定是一个好习惯)
  • 您应该始终在事件处理程序中添加另一个访问控制检查,以查看该呼叫是否已获得授权