В настоящее время я работаю над настройкой разрешений для своего веб-приложения. Не каждый должен иметь доступ к определенным страницам, например, создавать/редактировать/удалять (обычно) или добавлять новые права для пользователей. У меня есть таблица в моей базе данных, которая отслеживает пользователей и их роль/права. Я переопределяю AuthorizeAttribute. То, что я хотел бы сделать, - это когда пользователь не имеет права доступа к странице, для того, чтобы они были перенаправлены обратно на страницу, на которой они были только, и предупреждение, в котором говорится, что у них нет доступа.MVC Reroute к действию, когда пользователь не авторизован
Пример: если они находятся на домашней странице и нажмите кнопку «Добавить новую вещь», если у них нет прав, они будут перенаправлены на домашнюю страницу с ошибкой.
Для выполнения этой работы мне необходимо получить доступ к предыдущим именам действий/контроллеров, поскольку предыдущая страница никогда не может быть одинаковой.
Текущий заказ AuthorizeAttribute HandleUnauthorizedRequest Метод
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "action", filterContext.RouteData.Values["action"] },
{ "controller", filterContext.RouteData.Values["controller"] }
});
}
Это заставляет меня действие/контроллер, который они пытаются получить доступ, я умею попасть туда, куда они идут?
Я считаю, что лучшим выбором будет заголовок Referer (sic). – klings
@klings Вы могли бы немного разобраться? –
Результат = новый RedirectResult (filterContext.HttpContext.Request.UrlReferrer) –