Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница:

 

  Вопрос: Ролевая аутентификация в ASP.NET Добавлено: 20.05.03 09:17  

Автор вопроса:  Silent_Sky | ICQ: 134433 

Здраствуйте!  У меня такая проблема...
Есть система аутентификации с помощью форм. В приложении находиятся файлы 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>

т.е. имя форм одинаковы.
Кто нить с подобным сталкивался?

Ответить

  Ответы Всего ответов: 0  

Нет ответов

Страница:

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам