こんにちは(私はこれにかなり慣れていません)、
C# プログラムにログイン コントロールがあり、ユーザーがログインすると、他のプログラム (ポータル) へのリンクを表示できます。ユーザーがログインしたら、管理者以外の全員に対して「新しいユーザーの作成」リンクを非表示にすることはできますか? 管理者のみが新しいユーザーを作成できるようにしたいので、これはweb.configで変更するものですか(これにはCreateUserWizardを使用します)。
ありがとうございました。
こんにちは(私はこれにかなり慣れていません)、
C# プログラムにログイン コントロールがあり、ユーザーがログインすると、他のプログラム (ポータル) へのリンクを表示できます。ユーザーがログインしたら、管理者以外の全員に対して「新しいユーザーの作成」リンクを非表示にすることはできますか? 管理者のみが新しいユーザーを作成できるようにしたいので、これはweb.configで変更するものですか(これにはCreateUserWizardを使用します)。
ありがとうございました。
私があなたを理解しているなら、あなたは特定の役割(この場合は「管理者」の役割)であるasp.net Webサイトの認証されたユーザーにのみページへのアクセスと表示を許可したいですか?
これを行うには、サイトマッププロバイダーでセキュリティトリミングを有効にする必要があります。
<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.NET2.0でロールマネージャーを使用する」を参照してください。
'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");
コードビハインド:
createUserLink.Visible = currentUser.IsAdmin;
LoginViewコントロールは、ユーザーの役割に応じて特定のコンテンツを表示できます。