Мне, возможно, придется разработать систему ERP, которая не будет публиковаться c на веб-сайте, а будет использоваться различными пользователями конкретной c организации. Я ищу лучшую идею для разработки области системы разрешений пользователей, где администратор назначает доступ к ролям и назначает эти роли пользователю. Ролевой пользователь может или не может получить доступ к веб-страницам.
изначально у меня есть идея, которую я хотел бы кратко обсудить. просто скажите мне, в правильном ли я направлении?
предположим, что на моем сайте будут страницы, связанные с кадрами, продажами и со счетами. Таким образом, любой пользователь не может получить доступ к страницам, связанным с HR или Account, Purchase. способ, которым администратор предоставляет права таким образом, чтобы пользователь мог получить доступ к области.
предположим, что на первой странице администратор сохранит все имя контроллера и имя их действия в главной таблице
для страницы администратора, где я покажу весь контроллер и имя действия вместе с скрытым идентификатором.
Say HR Controller
1) PayslipView Action
2) Payslip Edit Action
et c
, поэтому администратор сначала создаст несколько ролей, таких как HR , Учетные записи, Покупка и продажа и т. Д. c.
сначала администратор. Выберите роли из раскрывающегося списка .
ниже. Я покажу название разумного действия контроллера. admin просто отметьте имя контроллера несколькими именами действия и сохраните эту информацию в db. где я сохраню идентификатор роли и идентификатор контроллера, идентификатор действия.
таким образом я могу прикрепить идентификатор контроллера и действия к ролям. когда эта роль будет назначена, она будет сохранена в базе данных с идентификатором роли и идентификатором пользователя.
на уровне контроллера или уровне действия я напишу настраиваемый атрибут, с помощью которого я буду проверять, что указанный c пользователь имеет какая роль и имеет разрешение на доступ к этому действию?
, потому что я не хочу жестко кодировать роли с таким действием
[Authorize(Roles = "Producer")]
[Authorize(Roles = "Admin")]
public ActionResult Details(int id) {
// Only available to users who are Producers AND Editors
}
скорее, я хотел бы следовать этому способу ниже
public class DynamicRoleAuthorizeAttribute: AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var controller = httpContext.Request.RequestContext
.RouteData.GetRequiredString("controller");
var action = httpContext.Request.RequestContext
.RouteData.GetRequiredString("action");
// feed the roles here
Roles = string.Join("," ,_rolesProvider.Get(controller, action));
return base.AuthorizeCore(httpContext);
}
}
[DynamicRoleAuthorize]
public ActionResult MyAction()
{
}
но мой вопрос в том, если какой-либо разработчик по ошибке изменит какое-либо действие или имя контроллера в файле cs, тогда как я могу управлять всем этим. по ошибке, если любое имя контроллера или имя действия изменится, моя идея не будет работать должным образом.
поэтому, пожалуйста, расскажите мне, как разработать такую систему разрешений в asp. net mvc 5, который не будет зависеть от имени контроллера или имени действия. если это имя изменится, то разрешение должно работать.
пожалуйста, помогите мне с идеей или примером кода для реализации в веб-продукте. или расскажите мне другому разработчику опыта, как они справляются с подобными ситуациями с любой зависимостью. ищу лучший ориентир для реализации такой системы разрешений.
Я ищу в Google, но не нашел хорошего решения, которому я мог бы следовать. есть множество статей о различных топах c, связанных с asp. net mvc, но это очень важная часть любого продукта, который, как я понял, мало касался моего поиска в Google.
если у кого-то есть ссылки на статьи, связанные с этим топом c, то, пожалуйста, поделитесь со мной URL-адресом для RBA C системы . если статья находится на asp. net core mvc, тогда это также поможет мне получить представление.
спасибо