Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.150.163] |
|
Сообщ.
#1
,
|
|
|
Здраствуйте! У меня такая проблема...
Есть система аутентификации с помощью форм. В приложении находиятся файлы login.aspx-файл самой формы и default.aspx-страница администрирования Юзеры лежат на sql'e. В web.config пишу вот так: <br><authentication mode="Forms"><br><forms name="SuperPuperLogin" loginUrl="/login/login.aspx" protection="All" timeout="10" path="/"><br></forms><br></authentication><br> Использую ролевую аутентификацию, в модуле файла global.asax есть такой код: <br>Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)<br> If Context.Request.IsAuthenticated Then<br> 'Здесь работа с SQL-сервером...<br> 'Передаю SQL серваку имя залогинненого юзера User.Identity.Name а в <br> 'ответ получаю роли в которых юзер входит:<br> myCommand = New System.Data.SqlClient.SqlCommand("DBGetUserRoles", myConnection)<br> myCommand.CommandType = CommandType.StoredProcedure<br> myCommand.Parameters.Add("@username", User.Identity.Name)<br> Dim myDataAdapter As New System.Data.SqlClient.SqlDataAdapter(myCommand)<br> Dim myDataSet As New System.Data.DataSet()<br> myDataAdapter.Fill(myDataSet, "CurrentUserRoles")<br> Dim myRow As System.Data.DataRow<br> Dim arrRole As New ArrayList()<br> 'Перебор по полученным ролям<br> For Each myRow In myDataSet.Tables("CurrentUserRoles").Rows<br> If arrRole.IndexOf(myRow("r_roles")) < 0 Then<br> arrRole.Add(myRow("r_roles"))<br> 'Здесь еще проверка не входит ли текущая роль в другие роли<br> 'и если входит то тоже добавляется в arrRole<br> End If<br> Next<br> arrRole.Add("everyone")<br> arrRole.TrimToSize()<br> 'Присваивание юзеру ролей<br> Context.User = New System.Security.Principal.GenericPrincipal(Context.User.Identity, arrRole.ToArray(GetType(String)))<br> arrRole.Clear()<br> End If<br> End Sub<br> Проблема вот в чем. Все это работает если я выставляю права по ролям в пределах этого виртуального каталога. Например вот так: <br><authorization><br> <allow roles="admin" /><br> <deny users="*" /><br></authorization><br> А вот если я пишу в другом вирт.каталоге точно такое же, то меня все равно туда не пускает. Хотя запись типа: <br><authorization><br> <allow users="username" /><br> <deny users="*" /><br></authorization><br> работает прекрасно. Запись в конфиге: <br><authentication mode="Forms"><br><forms name="SuperPuperLogin" loginUrl="/login/login.aspx" protection="All" timeout="10" path="/"><br></forms><br></authentication><br> т.е. имя форм одинаковы. Кто нить с подобным сталкивался? |