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