将某些页面功能或用户界面限制为 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;
有没有更好的方法来实现这一目标。任何帮助都非常感谢。谢谢
在这里,您可以使用 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 编码值仍然存在于视图状态中。客户端能够读取它。
客户端还可以读取触发操作的隐藏控件。没有什么能阻止"智能"客户端触发此操作。
所以:
- 如果不想显示受限访问值,则不应将其绑定到控件(不对不可见控件调用预呈现。所以在预渲染中进行绑定是一个好习惯)
- 应始终在事件处理程序中添加另一个访问控制检查,以查看调用是否经过授权