Назначение ролей с помощью 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
Ответы
Ответ 1
Для взаимодействия с Ролями вам необходимо использовать Roles API. Что-то вроде следующего должно работать:
if (!Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
if (!Roles.GetRolesForUser(model.UserName).Contains("Administrator"))
Roles.AddUsersToRole(new[] { model.UserName }, "Administrator");
Ответ 2
WebSecurity.InitializeDatabaseFile("SecurityDemo.sdf", "Users", "UserID", "Username", true);
Выберите этот сайт. Возможно, это поможет.
http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx