JamiePattison Ответов: 1

Как добавить роли с помощью MVC 4 и forms auth?


Пытаясь понять, как я должен использовать MVC 4 (VS 2013) с Forms Auth. Вот шаги, которые я предпринял

1. Создайте новый проект ASP .Net MVC 4 > Интернет-приложение (по умолчанию ASP.NET проект MVC 4 с контроллером учетных записей, использующим аутентификацию форм.).

2. Запустите приложение и все запуски. Я создаю пользователя, используя общедоступную ссылку /учетная запись/Регистрация

3. Код, который побежал создал 4 таблицы. webpages_Membership, webpages_OAuthMembership, webpages_Roles, webpages_UsersInRoles. Я вижу свое имя Пользователя, указанное в 1 таблице, и соответствующую информацию в другой. Ничего В ролях.

Я хотел бы добавить роль и ограничить ссылку на регистр одной группой. Если пользователь приходит на страницу регистрации и не входит в группу, он получает сообщение об ошибке.

Я попытался добавить [Authorize(Roles="Admin")] к одному из методов, найденных в разделе automatic class generated AccountController, но это не решило проблему.

Тогда я рассматривал возможность добавления роли вручную, но я не знаю, правильно ли это, или мне нужно изменить файл web.config (это, кажется, рекомендуется для webforms, но не смог найти ничего, чтобы предположить, что это нормально для MVC).

Может ли кто-нибудь помочь мне добавить роль и связать ее с пользователем? Я создал этот базовый проект, чтобы расширить его, поэтому, идя дальше, я бы внес аналогичные изменения.

Что я уже пробовал:

Я попытался добавить [Authorize(Roles="Admin")] к одному из методов, найденных в разделе automatic class generated AccountController, но это не решило проблему.

Тогда я рассматривал возможность добавления роли вручную, но я не знаю, правильно ли это, или мне нужно изменить файл web.config (это, кажется, рекомендуется для webforms, но не смог найти ничего, чтобы предположить, что это нормально для MVC).

Richard Deeming

Если страница "регистрация" предназначена для новых, незарегистрированных пользователей, чтобы создать учетную запись, то как бы вы ограничили ее пользователями в определенной роли? Пользователь еще не прошел проверку подлинности, поэтому он не может быть членом каких-либо ролей.

Что вы используете для управления членством? На протяжении многих лет Microsoft выпускала несколько различных систем аутентификации/авторизации, и ответ на ваш вопрос будет отличаться для каждой из них.

1 Ответов

Рейтинг:
0

dnxit

Я предполагаю, что вы хотите дать возможность регистрации какой-то конкретной роли, поэтому вот шаги, которые вам нужно выполнить

Сначала создайте роль, затем назначьте ее тем пользователям, которых вы хотите разрешить, и, наконец, вам нужно поставить авторизацию на все эти действия.

Для создания роли можно использовать диспетчер ролей,

// Create object of role manager
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new YourDataContext()));

// Create Role in the system
var role = new IdentityRole(){Name="Admin"};
var result = await roleManager.CreateAsync(role);
if (result.Succeeded)
{

}

//Crate object of user manager
var userManager = new UserManager<AppUser>(new UserStore<AppUser>(new YourDataContext()))


// Find User by email
var user = await userManager.FindByEmailAsync(model.Email);

// Assign roles to user
await userManager.AddToRolesAsync(user.Id, model.Roles.ToArray()); // Roles will have role names e.g. "Admin", "Approver" etc


[Authorize(Roles = "Admin")]
public ActionResult Register()
{
}