2012-04-04 6 views
0

私のアプリケーションでは、ロールとルールを使用してセキュリティが働いていますが、ユーザーが特定のロールに属しているかどうかによってWebリンクを非表示にできるかどうかは疑問でした。ロールが割り当てられていないユーザーからのWebリンクを非表示にする

私は現在、ユーザーが 'admin'ロールまたは 'user'ロールのいずれかに属しています。私のアプリケーションのフォルダにルールが設定されているので、ユーザーがいずれかのグループに所属している場合、Webリンクをクリックしてページに移動させることができます。しかし、新しいユーザーが登録されていない場合はロールには属さず、Webリンクをクリックするとホームページにリダイレクトされます(下記のコードを参照)。これはすばらしいことですが、ユーザーが特定の役割に属していない場合は、そのWebリンクをクリックしないようにすることができます。また、ユーザーがロールに属していない場合、ページにリダイレクトされてロールが割り当てられている必要があることを伝えることができますか? user.identityが属していない場合:ユーザーが認証された場合

<authentication mode="Forms"> 
    <forms loginUrl="~/Homepage1.aspx" timeout="2880" /> 
</authentication> 

は、私は、過去にこのチェックを現在のアプリケーションでこれを使用してはいけないが、持っている、私は文の場合、私は同様のを使用することができるかどうかを疑問に思いました「ユーザー」または「管理者」のロールに変更し、それらをページにリダイレクトしてエラーを表示しますか?

If User.Identity.IsAuthenticated = True Then 

     Dim myUser As MembershipUser 
     Dim objUser As Object 

     myUser = Membership.GetUser(User.Identity.Name) 
     objUser = myUser.ProviderUserKey 

     Session("ID") = objUser 

    Else 

     MsgBox("You are not entitled to view this page", MsgBoxStyle.Critical, "Warning") 
     Response.Redirect("~/NoAccess.aspx") 

    End If 

答えて

0

いや、あなたはUser.IsInRole(role as String)を使用することができます。

<% If User.IsInRole("admin") Then %> 

<a href="admin-tools.aspx">Admin Tools</a> 

<% End If %> 

あなたがアイデアを得ます。どのようなシナリオにしても、ロールに基づいてリンクを表示/非表示にする必要があります。

ロール管理の詳細については、hereを参照してください。

+0

私はユーザーを宣言しなければならないと思いますか?メンバーシップユーザーとしてdimユーザーですか?またはロールの特定の宣言がありますか? – Blob

+0

'User'が組み込まれています。これは、現在ログインしているユーザの 'System.Security.Principal.IPrincipal'です。 –

+0

私は自分の答えに追加したリンクを読んだり、ロールマネジメントとそれがどのように機能するかを読んでみることをお勧めします。 –

関連する問題