我试图限制访问某些页面失败。有什么想法吗?

时间:2012-12-19 15:14:23

标签: asp.net vb.net user-roles

好的,我已经搜索过该网站以及寻找无效答案的其他人。

我们的新网站附带管理部分,允许所有成员访问此管理部分中的某些页面。

但是,只允许3个访问所有页面。

我正在尝试使用登录页面将所有用户带到管理部分,其中包含感兴趣的项目菜单。

我们的目标是,当用户访问此部分并点击他们无权查看的项目时,他们会被重定向回欢迎页面。

更好的选择当然是一条消息,“您无权查看此页面”。

是否有我可以修改的链接或示例代码来帮助我完成此任务?

我下面的代码无效。

它将我引导到管理部分就好了。然后在每个链接的page_load事件中,我会使用会话来尝试限制用户。

示例:如果会话(“管理员”)<>那么真的  的Response.Redirect( “home.aspx”) 结束如果

但并不限制任何人查看屏幕上列出的任何链接。

Sub CmdLogin_Click(ByVal Sender As Object, ByVal E As EventArgs) Handles CmdLogin.Click

    Dim StrUser As String, StrPass As String
    Dim BValid As Boolean
    Dim Conn As OleDbConnection
    Dim Cmd As OleDbCommand
    Dim rs As OleDbDataReader
    Dim StrSQL As String

    ' We will request all variables from our form with this.
    'Protect against SQL Injection
    StrUser = Replace(txtUser.Text, "'", "''", 1, -1, 1)
    StrPass = Replace(txtPass.Text, "'", "''", 1, -1, 1)

    ' This is our boolean variable for validation purposes set to true if valid user
    BValid = False

    ' Initialize Database Connection
    Conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("App_Data\Members.mdb"))
    ' Create Select Command
    StrSQL = "SELECT Access_Level, myEmail,UserPassword FROM tblUsers WHERE myEmail='" & StrUser & "' AND UserPassword = '" & StrPass & "'"
    'Response.Write(StrSQL)
    'Response.End()
    Cmd = New OleDbCommand(StrSQL, Conn)

    Conn.Open()

    rs = Cmd.ExecuteReader()

    ' This acts like the (Not RecordSource.Eof) in ASP 3.0
    While rs.Read()
        If rs("Access_Level") = "1" Or rs("Access_Level") = "2" Then
            Session("Admin") = True
            Response.Redirect("admin.aspx")
            'Response.Write(StrPass)
            'Response.End()
            Dim redirectTo As String = Trim(Session("RedirectTo"))
            BValid = True
        Else
        End If
    End While

    ' Don't forget this
    Conn.Close()

    ' This handles all response per validation
    ' If validated it goes to admin.aspx page
    If BValid = True Then
        Session("userid") = StrUser
        Dim redirectTo As String = Trim(Session("RedirectTo"))
        If redirectTo <> "" Then
            Response.Redirect(redirectTo)
        Else  'They just got in without trying to go to a restricted page
            Response.Redirect("admin.aspx")
        End If
    ElseIf BValid = False Then
        lblError.Text = "Login failed: Please try again."
    End If
    End Sub

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你不需要在这里尝试的体操。考虑使用成员资格,角色和buildin .net功能来限制对特定文件夹/页面的访问。

请查看我的一篇文章,了解如何轻松完成此任务:

How to restrict unlogged unauthorized users from viewing web pages