2009-11-03 54 views
0

嗨(我很新的這個),是否有可能只向管理員顯示C#程序中的鏈接?

我有一個登錄控制在我的C#程序中,一旦用戶登錄,他們能夠看到其他程序(門戶)的鏈接。一旦用戶登錄後,是否可以隱藏「創建新用戶」鏈接給除admin以外的所有人?這是我在web.config中改變的事情,因爲我只希望管理員能夠創建新用戶(我爲此使用了CreateUserWizard)。

謝謝。

+0

你對'admin'有什麼意思,它在你的應用程序中扮演了什麼角色?你的意思是當前登錄的Windows用戶? – BennyM

+0

我是管理員,並已在asp.net配置中設置了這一點,所以我想知道是否有可能,只有我可以看到「創建用戶」的鏈接,對於所有其他用戶,此文本不顯示。 在我的web.config我已經加入:<位置路徑= 「CreateUser.aspx」> <授權> <允許用戶= 「管理員」/> Mike

回答

2

我假設'管理員'是你的應用程序中的一個角色。如果是這樣,您可以使用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方法,e.g:

somePanel.Visible = Roles.IsUserInRole("Admin"); 
0
在您的代碼隱藏

createUserLink.Visible = currentUser.IsAdmin; 
2

如果我理解你,你希望只允許訪問和顯示,頁面在一個asp.net網站是誰在特定角色的身份驗證的用戶(在此情況下,「管理員」角色)?

要做到這一點,你需要啓用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

+0

是的它是一個管理員角色。現在工作,所以只有管理員可以查看頁面 - 謝謝。 – Mike

0

LoginView控件可以顯示根據用戶角色的某些內容。

相關問題