Перенаправление в классе, который реализует ActionFilterAttribute - PullRequest
0 голосов
/ 25 августа 2011
public class AdministratorAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            EFUserRepository repo = new EFUserRepository();
            var user = repo.FindUserByUserName(filterContext.HttpContext.User.Identity.Name);
            if (user.UserRole.Name == "Administrator")
            {
                filterContext.Result = new RedirectToRouteResult(//Redirect to the original action they tried to enter?
            }
        }
        else
        {
            //redirect to the "Home/Index" area.
        }
    }
}

У меня проблемы с перенаправлением на действие из этого метода OnActionExecuting. Кроме того, как мне перенаправить пользователя к его первоначальному предполагаемому действию, если он полностью авторизован.

Этот атрибут [Administrator] будет размещен на многих различных контроллерах, поэтому я должен иметь способ перенаправить на соответствующий ActionResult, которого они пытались достичь.

1 Ответ

0 голосов
/ 25 августа 2011

Обычный способ сделать это, по крайней мере для GET, кодировать URL-адрес запрошенного URL-адреса и включать его. Например, для SO, если мы начнем этот вопрос как анонимный и нажмем кнопку входа, мы перейдем к

https://stackoverflow.com/users/login?returnurl=%2fquestions%2f7182675%2fredirecting-in-a-class-that-implements-the-actionfilterattribute

То же самое будет работать для перенаправления; как только вы завершили вход в систему, проверьте параметр returnurl и вернитесь.

Однако вы должны убедиться, что целевой URL либо относительно (тот же сайт), либо абсолютным по отношению к текущему сайту или другому вашему сайту / etc (* 1013) * подробности см. в OWASP - в частности, "Примеры сценариев").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...