隐藏未分配角色的用户的Web链接

时间:2012-04-04 11:12:08

标签: asp.net vb.net visual-studio-2010 webforms

我目前在我的应用程序中使用角色和规则有一些安全性,但我想知道是否可以隐藏Web链接,具体取决于用户是否属于某个角色。

我目前拥有它,因此用户属于“管理员”角色或“用户”角色。已在我的应用程序中的文件夹上设置规则,因此如果用户属于任一组,则可以单击Web链接并将其带到页面。但是,如果新用户注册它们不属于任何角色,并且当他们点击Web链接时,它会将它们重定向到主页(请参阅下面的代码)。这很好,但是,我想知道如果用户不属于某个特定角色阻止他们点击它,就可以隐藏该Web链接。此外,如果用户不属于任何角色,他们是否可以重定向到页面以告诉他们需要分配角色?

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

我不在当前的应用程序中使用它,但在过去,这检查用户是否已经过身份验证,我想知道我是否可以使用类似的IF语句: 如果user.identity不属于“用户”或“管理员”角色,那么将它们重定向到页面并显示错误?

    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

2 个答案:

答案 0 :(得分:0)

是的,您可以使用User.IsInRole(role as String)

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

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

<% End If %>

你明白了。您可以根据任何角色定制/隐藏链接的任何场景。

要了解有关角色管理的更多信息,请阅读here

答案 1 :(得分:0)

在你的情况下,我认为LoginView控件会更好。请参阅此处的文档:http://msdn.microsoft.com/en-ca/library/system.web.ui.webcontrols.loginview(v=vs.100).aspx

祝你有个美好的一天!