Добавление компании пользователям в структуру ASP.NET MVC

В последнее время я читал и играл с ASP.NET MVC, чтобы выяснить, будет ли это новая структура для существующего продукта.

Продукт состоит из многопользовательского веб-сайта, на котором я создаю клиентов и добавляю их в соответствующие компании. Затем каждый пользователь имеет доступ к некоторым действиям, добавлению данных и т. д. в рамках своей собственной компании.

Как мне создать такую ​​структуру в MVC? Я в основном хочу быть «супер-админом», который может создавать новых пользователей, добавлять их в компании и контролировать их права. Обычные пользователи также будут иметь разные роли пользователей (администратор, пользователь, гость) в своей компании.

У меня почти все остальное настроено (MVC и фреймворк Entity потрясающие), но мне просто нужен этот последний уровень разделения.

Любая помощь горячо приветствуется.


person David K    schedule 04.02.2015    source источник


Ответы (1)


Там действительно две части к этому. Во-первых, это роли. Просто создайте четкое обозначение между ролями для компании и ролями для всего приложения, например: «Администратор», «Администратор компании», «Пользователь компании» и «Гость компании». Здесь я буквально имею в виду «Компания», а не заполнитель для названия конкретной компании. У вас должен быть только один набор ролей, применимый ко всем пользователям компании.

Вторая часть представляет собой форму разрешения на право собственности. Каждый пользователь назначается компании, конечно, через внешний ключ в вашей пользовательской сущности. Ваши маршруты будут содержать некоторый компонент, который идентифицирует используемую компанию, будь то через поддомен или просто часть пути, то есть /FooInc/Bar/Baz. В своих действиях вы будете использовать этот компонент для поиска компании в своем хранилище, а затем сравнить ее с компанией, к которой назначен пользователь. Если они не совпадают, вы возвращаете 403. В противном случае вы позволяете пользователю продолжить.

Есть много способов сделать это. Вы можете использовать фильтр действий, базовый контроллер и т. д. Это в значительной степени зависит от вас и потребностей вашего приложения. Несмотря на это, ASP.NET MVC очень хорошо справляется с такими вещами.

person Chris Pratt    schedule 04.02.2015
comment
Привет Крис. Хороший ответ, я нашел образцы удостоверений asp.net после публикации этого вопроса, и это в сочетании с вашим ответом имеет смысл. Я почти уверен, что мы будем использовать MVC для нашего нового сайта, это кажется очень мощным. - person David K; 04.02.2015