4

我正在使用Asp.Net/C#构建应用程序。我正在使用Forms Authentication。我有一个要求,以至于我的许多人authenticated (not anonymous) users都仅限于某些页面功能或用户界面。我想Login Control只能用于用户。Authenticated vs Anonymous所以我的问题是当我知道某些页面组件要对特定的经过身份验证的用户隐藏,我该怎么做。你认为我需要在 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;

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

4

2 回答 2

1

在这里,您可以使用 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

于 2012-04-17T07:07:22.923 回答
1

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

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

所以 :

  • 如果您不想显示受限访问值,则不应将其绑定到控件(在不可见的控件上不会调用 prerender。因此,在 prerender 中进行绑定是一个好习惯)
  • 您应该始终在事件处理程序中添加另一个访问控制检查,以查看调用是否被授权
于 2012-04-17T07:40:19.737 回答