ASP.NET MVC2 Пользовательский RoleProvider GetRolesForUser не вызывается - PullRequest
2 голосов
/ 05 сентября 2010

В моем приложении ASP.NET MVC 2 возникла ситуация, когда при использовании атрибута [Authorize(Roles = "Admin,User,Test")] в любом из методов контроллера мой пользовательский поставщик ролей не вызывается. Сложность в том, что когда я запускаю приложение на сервере Visual Studio Web Dev, этот GetRolesForUser вызывается каждый раз. Когда я устанавливаю приложение в IIS, этого больше не происходит.

Я использую Windows 7 x64 Enterprise.

Роль провайдера настроен в web.config следующим образом:

<roleManager defaultProvider="GTTRoleProvider" enabled="true">
      <providers>
        <clear />
        <add name="GTTRoleProvider" type="GTT.Security.GTTRoleProvider, GTT.Security" applicationName="GTT" />
      </providers>
    </roleManager>

В реализации поставщика ролей этот метод реализован следующим образом:

public override string[] GetRolesForUser(string username)
        {
            if (log.IsDebugEnabled)
                log.DebugFormat("Gettings roles for user {0}", username);

            BaseConfiguration cfg = new BaseConfiguration();
            using (ISession session = cfg.OpenSession())
            {
                IUserDAO userDao = new UserDAO(session);
                GUser user = userDao.GetByUserName(username);
                return new string[] { user.BaseRole.Name };
            }
        }

Что я делаю не так или чего мне не хватает?

т. Erki.

[РЕДАКТИРОВАТЬ: 1] Мне удалось отследить источник моих проблем - у меня также был реализован собственный класс Principal, но я предоставил пустые роли базовому конструктору GenericPrincipal. Заполнив это ролями пользователя, все начало работать. Но метод GetRolesForUser все еще не выполняется для моего поставщика пользовательских ролей. Кто-нибудь может объяснить, почему это работает на сервере разработки ASP.NET (внутри Visual Studio), а не в IIS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...