Как добавить разрешение для представления или контроллера динамически?
Во всех моих проектах asp.net mvc до этого момента разрешения для контроллеров устанавливались с помощью пользовательского класса, основанного на [Authorize]
приписывать.
Однако, что если бы мне нужна роль администратора, которая могла бы предоставить доступ к представлениям вместо того, чтобы прикасаться к контроллеру, чтобы добавлять / удалять роли, перекомпилировать и отправлять изменения в рабочую среду. Как бы я поступил так?
1 ответ
Решение
Как обсуждалось. Попробуйте ниже.
в контроллере, как я уверен, вы знаете.
[PermissionsFilter("CanAccessMyView")]
public ActionResult ReturnMyView ()
{
//etc..
}
Затем в вашем пользовательском классе
public class PermissionsFilter : AuthorizeAttribute
{
private readonly PermissionManager _permissionsManager;
public PermissionsFilter(string permissionName)
{
_permissionName = permissionName;
_permissionsManager = new PermissionServiceManager();
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!_permissionServiceManager.CanAccessPermission(_permissionName))
{
var urlHelper = new UrlHelper(filterContext.RequestContext);
var url = urlHelper.Action("Unauthorised", "Home");
filterContext.Result = new RedirectResult(url);
}
}
}
Где менеджер разрешений запрашивает базу данных или, возможно, информацию о сеансе, чтобы узнать, есть ли у пользователя пользователь.
Надеюсь, это поможет.