0

現在、ロールとルールを使用してアプリケーションである程度のセキュリティが機能していますが、ユーザーが特定のロールに属しているかどうかに応じて、Web リンクを非表示にできるかどうか疑問に思いました。

私は現在それを持っているので、ユーザーは「管理者」ロールまたは「ユーザー」ロールのいずれかに属しています。アプリケーションのフォルダにルールが設定されているため、ユーザーがいずれかのグループに属している場合、ユーザーは Web リンクをクリックしてそのページに移動できます。ただし、新しいユーザーが登録すると、ロールに属さず、Web リンクをクリックすると、ホームページにリダイレクトされます (以下のコードを参照)。これは素晴らしいことですが、ユーザーが特定の役割に属していないためにそのリンクをクリックできない場合、その Web リンクを非表示にすることは可能でしょうか。また、ユーザーがどのロールにも属していない場合、ロールを割り当てる必要があることを伝えるページにリダイレクトできますか?

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

私は現在のアプリケーションではこれを使用していませんが、過去に、これはユーザーが認証されているかどうかをチェックしています。同様の IF ステートメントを次のように使用できるかどうか疑問に思いました:役割、次にそれらをページにリダイレクトしてエラーを表示しますか?

    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
4

2 に答える 2

0

はい、使用できますUser.IsInRole(role as String)

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

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

<% End If %>

あなたはアイデアを得る。役割に基づいてリンクを表示/非表示にする必要があるシナリオに合わせて調整できます。

ロール管理の詳細については、こちらをご覧ください。

于 2012-04-04T12:15:10.060 に答える
0

あなたの場合、LoginView コントロールの方が優れていると思います。こちらのドキュメントを参照してください: http://msdn.microsoft.com/en-ca/library/system.web.ui.webcontrols.loginview(v=vs.100).aspx

良い一日を過ごしてください!

于 2012-04-04T12:19:02.457 に答える