На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Ролевая аутентификация в ASP.NET
    Здраствуйте!  У меня такая проблема...
    Есть система аутентификации с помощью форм. В приложении находиятся файлы login.aspx-файл самой формы и default.aspx-страница администрирования Юзеры лежат на sql'e. В web.config пишу вот так:

    ExpandedWrap disabled
      <br><authentication mode="Forms"><br><forms name="SuperPuperLogin" loginUrl="/login/login.aspx" protection="All" timeout="10" path="/"><br></forms><br></authentication><br>


    Использую ролевую аутентификацию, в модуле файла global.asax есть такой код:

    ExpandedWrap disabled
      <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>


    Проблема вот в чем. Все это работает если я выставляю права по ролям в пределах этого виртуального каталога. Например вот так:

    ExpandedWrap disabled
      <br><authorization><br>    <allow roles="admin" /><br>    <deny users="*" /><br></authorization><br>


    А вот если я пишу в другом вирт.каталоге точно такое же, то меня все равно туда не пускает.
    Хотя запись типа:

    ExpandedWrap disabled
      <br><authorization><br>    <allow users="username" /><br>    <deny users="*" /><br></authorization><br>


    работает прекрасно.
    Запись в конфиге:

    ExpandedWrap disabled
      <br><authentication mode="Forms"><br><forms name="SuperPuperLogin" loginUrl="/login/login.aspx" protection="All" timeout="10" path="/"><br></forms><br></authentication><br>

    т.е. имя форм одинаковы.
    Кто нить с подобным сталкивался?
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0182 ]   [ 17 queries used ]   [ Generated: 19.04.24, 20:48 GMT ]