Подтвердить что ты не робот

Назначение ролей с помощью MVC SimpleMembership

Я пробовал "SimpleMembership" в MVC3 через Nuget и загрузил образец для воспроизведения. Проблема в том, что я не могу понять, как назначить роль конкретному пользователю.

В стандартном членстве MVC вы можете просто использовать что-то вроде:

Roles.AddUserToRole(model.UserName, "StandardUser");

Однако SimpleMembership, похоже, имеет один метод для раскрытых ролей (если Im не глупо!), который

public void RequireRoles(params string[] roles)
        {
            WebSecurity.RequireRoles(roles);
        }

Должен быть простой способ, поскольку следующая таблица была создана как часть этого пакета nuget:

-TABLE: webpages_Roles
     RoleId , RoleName

Это немного запутанно, хотя, как и в App_Start/SimpleMembershipMvc3.cs, существует следующее:

Roles.Enabled = true;
RoleProvider provider3 = Roles.Providers["AspNetSqlRoleProvider"];
        if (provider3 != null)
        {
            RoleProvider provider6 = provider3;
            SimpleRoleProvider provider4 = CreateDefaultSimpleRoleProvider("AspNetSqlRoleProvider", provider6);
            Roles.Providers.Remove("AspNetSqlRoleProvider");
            Roles.Providers.Add(provider4);
        }

Функция SimpleRoleProvider

 private static SimpleRoleProvider CreateDefaultSimpleRoleProvider(string name, RoleProvider currentDefault)
            {
                RoleProvider previousProvider = currentDefault;
                SimpleRoleProvider provider = new SimpleRoleProvider(previousProvider);
                NameValueCollection config = new NameValueCollection();
                provider.Initialize(name, config);
                return provider;
            }

Использует ли этот пакет встроенный поставщик ролей? Если да, то как он подключается к таблицам, созданным SimpleMembership

4b9b3361

Ответ 1

Для взаимодействия с Ролями вам необходимо использовать Roles API. Что-то вроде следующего должно работать:

if (!Roles.RoleExists("Administrator"))
    Roles.CreateRole("Administrator");

if (!Roles.GetRolesForUser(model.UserName).Contains("Administrator"))
    Roles.AddUsersToRole(new[] { model.UserName }, "Administrator");