Итак, у меня есть два пользовательских атрибута авторизации: 1) перенаправить пользователя на вход в систему, когда сеанс истек или не прошел аутентификацию;2) в данный момент выполняется.
Идея второго пользовательского атрибута авторизации состоит в том, чтобы перенаправить пользователя на ту же страницу, прежде чем он / она перейдет на следующую страницу, или предотвратить перенаправление на запрос следующей страницы.Допустим, код:
public class CustomAuth2Attribute : AuthorizeAttribute
{
private const string _errorController = "Error";
public override void OnAuthorization(AuthorizationContext filterContext)
{
var controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
var action = filterContext.ActionDescriptor.ActionName;
var area = "";
if (filterContext.RouteData.DataTokens.ContainsKey("area"))
area = filterContext.RouteData.DataTokens["area"].ToString();
if (controller == _errorController)
{
return;
}
// checking the user identity whether the user is allowed to access this page
// then redirect to the previous page before this request and add flash note: "not allowed to access the content"
}
}
Идея состоит в том, что если у пользователя нет доступа к определенной странице, я не отмечаю это как не авторизованный, вместо этого я должен вернуть его на страницу, которой он был ранее спримечание.
Также попробовал следующий код:
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
{
controller,
action,
area
}));
Я получаю слишком много перенаправлений, потому что я ссылаюсь на текущий контроллер, действие и область вместо предыдущегоодин.Я также пытался получить значение UrlReferrer, но это всегда null
.
Каким-либо образом я могу добиться этого?Любая помощь приветствуется.Заранее спасибо.