Я использую проверку подлинности с помощью форм с AD в качестве основного поставщика.
У меня две роли пользователя: член, администратор
В защищенной области у меня есть некоторые страницы, доступные только администратору.
web.config
<authentication mode="Forms">
<forms loginUrl="login.aspx" defaultUrl="/backend/" name="ssckt" timeout="60" path="/" />
</authentication>
<location path="backend">
<system.web>
<httpRuntime requestValidationMode="2.0" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="backend/Log.aspx">
<system.web>
<authorization>
<allow roles="admin"/>
<deny users="*"/>
</authorization>
</system.web>
Я пытаюсь разобраться, как отображать сообщение пользователю, если он пытается получить доступ область, в которой их роль не дает им доступа к ней.
Они могут получить к нему доступ, нажав на навигацию после входа в систему или если внешнее приложение перенаправит их туда. В последнем случае они перенаправляются на страницу входа в систему, они входят в систему, но перенаправляются обратно на нее без сообщения, информирующего их, что у них нет разрешения.
login.aspx
If AuthenticateUser(strLDAPconnection, txtUser.Text, txtPass.Text) = True Then
Dim roles = "member"
Dim ctx As PrincipalContext = New PrincipalContext(ContextType.Domain)
Dim up As UserPrincipal = UserPrincipal.FindByIdentity(ctx, txtUser.Text)
If up IsNot Nothing Then
Dim authGroups = up.GetAuthorizationGroups().Where(Function(c) c.Name = "backend-admin").Count()
If authGroups > 0 Then roles = "admin,member"
End If
Dim authTicket As New FormsAuthenticationTicket(1, txtUser.Text, DateTime.Now, DateTime.Now.AddMinutes(60), False, Roles)
Dim encryptedTicket As String = FormsAuthentication.Encrypt(authTicket)
Dim authCookie As New HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
Response.Cookies.Add(authCookie)
Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUser.Text, False))
Else
lblMsg.Text = "Invalid Username or Password"
End If
Могу ли я изменить страницу входа, чтобы узнать, перенаправляется ли пользователь обратно из-за неправильного назначения роли для доступа к конкретной странице?