是否可以仅向管理员显示C#程序中的链接?

时间:2009-11-03 10:47:40

标签: c# web-config privileges createuserwizard

嗨(我对此很陌生),

我的C#程序中有一个登录控件,一旦用户登录,他们就能看到其他程序(门户网站)的链接。一旦用户登录,是否可以隐藏除管理员以外的所有人的“创建新用户”链接?这是我在web.config中更改的内容,因为我只希望管理员能够创建新用户(我使用CreateUserWizard)。

谢谢。

4 个答案:

答案 0 :(得分:2)

如果我了解您,您希望只允许访问和显示页面给asp.net网站中具有特定角色(在本例中为“admin”角色)的经过身份验证的用户?

要执行此操作,您需要启用security trimming on your site map provider,例如

 <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>

有关完整概述,请参阅How To: Use Role Manager in ASP.NET 2.0

答案 1 :(得分:2)

我假设'admin'是您应用程序中的一个角色。如果是这样,您可以使用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");

答案 2 :(得分:0)

你的代码隐藏中的

createUserLink.Visible = currentUser.IsAdmin;

答案 3 :(得分:0)

LoginView控件可以根据用户角色显示某些内容。