OK, 나는이 사이트뿐만 아니라 다른 사람들이 아무 소용이없는 대답을 찾고 있는지 조사했습니다.특정 페이지에 대한 액세스를 제한하는 데 실패하고 있습니다. 어떤 아이디어?
새로운 웹 사이트에는 모든 구성원이이 관리 섹션 내의 특정 페이지에 액세스 할 수있는 관리 섹션이 있습니다.
그러나 모든 페이지에 대해 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
모든 도움을 주실 수 있습니다.
을 그냥 그래서 내가 7에서 .aspx 페이지가 있다고 가정 엉망이 최대하지 않으며, I 해당 페이지 중 3 개에 대한 액세스 권한을 다시 부여하려는 경우, 폴더 2 개를 만들고 관리자 한 명과 다른 사용자 한 명을 호출 한 다음 제한된 페이지를 관리자 폴더에 넣고 사용자 폴더에 저장해야합니까? 둘째, 역할을 사용하려면 SQL Server 데이터베이스를 사용해야합니까? 우리는 Access 데이터베이스를 사용하고 있습니다. 죄송합니다. 이전에는 역할을 사용하지 않았습니다. 감사합니다. –
첫 번째 답변 : 예, 좋은 사례 일 것입니다. 두 번째 대답 : SQL Server를 사용할 필요가 없지만 인생을 훨씬 쉽게 만들어줍니다. Access DB에 머무를 수 있습니다.이 주제에 대한 좋은 링크는 다음과 같습니다. http://imar.spaanjaars.com/404/using-the-microsoft-access-providers-to-replace-the-built-in-sql- server-providers 그러나 장기간 SQL Server로 마이그레이션하는 것이 좋습니다. 성능을 포함하여 많은 이점을 누릴 수 있습니다. –
@Grgor, 좋은 물건! 대단히 감사합니다. –