ASP.NET MVC2自定义RoleProvider GetRolesForUser未调用

时间:2010-09-05 18:04:14

标签: asp.net-mvc-2

我的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中工作吗?

0 个答案:

没有答案