将某些页面功能或用户界面限制为 Asp.Net 中经过身份验证的用户

本文关键字:Net Asp 经过 用户 身份验证 功能 用户界面 | 更新日期: 2023-09-27 18:31:17

我正在使用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;

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

将某些页面功能或用户界面限制为 Asp.Net 中经过身份验证的用户

在这里,您可以使用 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 编码值仍然存在于视图状态中。客户端能够读取它。

客户端还可以读取触发操作的隐藏控件。没有什么能阻止"智能"客户端触发此操作。

所以:

  • 如果不想显示受限访问值,则不应将其绑定到控件(不对不可见控件调用预呈现。所以在预渲染中进行绑定是一个好习惯)
  • 应始终在事件处理程序中添加另一个访问控制检查,以查看调用是否经过授权