В рамках метода-концентратора signalR я пытаюсь проверить, соответствует ли аутентифицированный пользователь определенной роли. В плоскости MVC я могу вызвать user.IsInRole
и вызвать метод переопределения класса RoleProvider
GetRolesForUser
класса.
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;
}
CustomRoleProvider
public class CustomRoleProvider:RoleProvider
{
public override string[] GetRolesForUser(string username)
{
return new[]{"Test_Role"};
}
}
Почему это не работает в сигнале R? user.IsInRole
не вызывает GetRolesForUser
и всегда возвращает False .