首页 > 解决方案 > SignalR 集线器 Context.User.IsInRole(xyz) 不调用 CumstomRoleProvider

问题描述

在 signalR 集线器方法中,我试图检查经过身份验证的用户是否属于特定角色。在平面 MVC 中,我可以调用user.IsInRole并调用类覆盖RoleProviderGetRolesForUser方法。

CustomRoleProvider 在 web.config 中设置:

    <roleManager cacheRolesInCookie="false" defaultProvider="CustomRoleProvider" enabled="true">
  <providers>
    <clear />
    <add name="CustomRoleProvider" type="CustomRoleProvider" />
  </providers>
</roleManager>

user.IsInRole被调用时CustomRoleProvider.GetRolesForUser(string username)被调用。

集线器代码

  public IEnumerable<Items> GetList()
    {
        IList<Items> result;

        var user = Context.User;
        if (user.IsInRole("Test_Role"))
            result = itemProvider.GetItems();
        else
            result = new[] {  };

        return result;
    }

自定义角色提供者

public class CustomRoleProvider:RoleProvider
{
     public override string[] GetRolesForUser(string username)
     {
         return new[]{"Test_Role"};
     }
}

为什么这在信号 R 中不起作用? user.IsInRole不调用GetRolesForUser并始终返回False

标签: signalrroleprovider

解决方案


推荐阅读