嗨(我对此很陌生),
我的 C# 程序中有一个登录控件,一旦用户登录,他们就可以看到指向其他程序(门户)的链接。用户登录后,是否可以向除管理员以外的所有人隐藏“创建新用户”链接?这是我要在 web.config 中更改的内容吗,因为我只希望管理员能够创建新用户(为此我使用了 CreateUserWizard)。
谢谢你。
嗨(我对此很陌生),
我的 C# 程序中有一个登录控件,一旦用户登录,他们就可以看到指向其他程序(门户)的链接。用户登录后,是否可以向除管理员以外的所有人隐藏“创建新用户”链接?这是我要在 web.config 中更改的内容吗,因为我只希望管理员能够创建新用户(为此我使用了 CreateUserWizard)。
谢谢你。
如果我理解您,您希望只允许 asp.net 网站中具有特定角色(在本例中为“管理员”角色)的经过身份验证的用户访问和显示页面?
为此,您需要在站点地图提供商上启用安全修整,例如。
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider"
description="Default SiteMap provider."
type="System.Web.XmlSiteMapProvider "
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>
这将告诉您的站点地图提供商考虑成员是否经过身份验证以及他们在显示菜单项时所扮演的角色。
通过 web.config 中的位置路径和角色实际阻止对路径的访问例如:
<location path="~/CreateNewUser.aspx">
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
有关完整概述,请参阅如何:在 ASP.NET 2.0 中使用角色管理器。
我假设“管理员”是您的应用程序中的一个角色。如果是这样,您可以使用LoginView控件。
<asp:LoginView id="LoginView1" runat="server">
<RoleGroups>
<asp:RoleGroup Roles="Admin">
<ContentTemplate>
Stuff only an administrator can see
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
</asp:LoginView>
您也可以使用IsUserInRole方法以编程方式进行操作,例如:
somePanel.Visible = Roles.IsUserInRole("Admin");
在您的代码隐藏中:
createUserLink.Visible = currentUser.IsAdmin;
LoginView 控件可以根据用户角色显示某些内容。