2017-01-11 2 views
0

Я хотел бы иметь разные ReturnUrl для определенных действий в моем ASP.NET MVC-контроллере. Контроллер имеет атрибут авторизовать и OnEndRequest обработчик сделать работу для добавления ReturnUrl не авторизационных запросов, как так:Как заменить ReturnUrl для определенного действия в asp.net mvc

protected override void OnEndRequest(object sender, EventArgs args) 
{ 
    HttpApplication app = (HttpApplication)sender; 
    var location = resp.RedirectLocation; 
    ... 
} 

Тогда location будет использоваться в качестве значения для параметра ReturnUrl.

Вопрос: Возможно ли, каким-то изящным способом, как некоторый атрибут на действии, заменить значение в resp.RedirectLocation или сделать это по-другому?

Спасибо.

+0

Хей человек, я видел ваш вопрос другой день, но я думал, что вы собираетесь иметь много ответов, но это не похоже, так. Я не знаю, разрешили ли вы эту проблему, я создал скрипку здесь с моей авторизацией attr: https://dotnetfiddle.net/5DLGCu, пожалуйста, посмотрите, подходит ли она вам: D – Kadaj

ответ

0

Вы можете отправить свой обратный адрес для пользовательских Authorize атрибут

public class AuthAttribute:ActionFilterAttribute 
    { 
    private string _returnUrl { get; set; } 
    public AuthAttribute(string url) 
     { 
      _returnUrl = url; 
     } 
    } 
+0

ok - как вы перенаправляете на _returnUrl когда не разрешено? – buffjape

+0

Это зависит от того, какой способ используется разработчиком для авторизации. Для аутентификации форм if (! HttpContext.Current.User.Identity.IsAuthenticated) {HttpContext.Current.Response.Redirect (_returnUrl);} –

+0

внутри атрибута? – buffjape