Обходная Аутентификация Форм автоматическое перенаправление для входа в систему, Как к?

Оператор содержит ключевое слово.

Выражение не содержит ключевое слово.

print "hello" является оператором, поскольку print является ключевым словом.

"hello" является выражением, но сжатие списка против этого.

Ниже приведен оператор выражения, и это истинно без понимания списка:

(x*2 for x in range(10))
6
задан ChrisF 9 June 2013 в 14:16
поделиться

5 ответов

Хорошо, я работал вокруг этого. Я сделал пользовательский ActionResult (HttpForbiddenResult) и пользовательский ActionFilter (NoFallBackAuthorize).

Для предотвращения перенаправления HttpForbiddenResult отмечает ответы с кодом состояния 403. FormsAuthentication не ловит ответы с этим кодом, таким образом, перенаправление входа в систему эффективно пропускается. NoFallBackAuthorize фильтруют проверки, чтобы видеть, авторизовывается ли пользователь во многом как, включенный, Авторизуйте фильтр. Это отличается, в котором это возвращает HttpForbiddenResult, когда доступ запрещен.

HttpForbiddenResult довольно тривиален:

public class HttpForbiddenResult : ActionResult
{
    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }
        context.HttpContext.Response.StatusCode = 0x193; // 403
    }
}

Это, кажется, не возможно пропустить перенаправление страницы входа в систему в FormsAuthenticationModule.

5
ответ дан 17 December 2019 в 04:54
поделиться

Мог бы быть клудж (и даже может не работать), но на Вашей Странице входа в систему посмотрите если Request.QueryString["ReturnUrl"] != null и раз так набор Response.StatusCode = 401.

Примите во внимание, что необходимо будет все еще заставить консольное приложение проходить проверку подлинности так или иначе. Вы не получаете HTTP основной автор бесплатно: Вы имеете к самокрутке, но существует много реализаций о.

1
ответ дан 17 December 2019 в 04:54
поделиться

Вы писали свой собственный атрибут FormsAuth для действия? Если так, в методе OnActionExecuting Вы передаетесь FilterExecutingContext. Можно использовать это для пасования назад этого 401 кода.

public class FormsAuth : ActionFilterAttribute
{
    public override void OnActionExecuting(FilterExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.StatusCode = 401;
        filterContext.Cancel = true;
    }
}

Это должно работать. Я не уверен, записали ли Вы атрибут FormsAuth или если Вы получили его от где-то в другом месте.

0
ответ дан 17 December 2019 в 04:54
поделиться

Я не использовал AuthorizeAttribute, который приезжает в Предварительный просмотр 4 все же. Я прокрутил свое собственное, потому что я использовал платформу MVC начиная с первого CTP. Я бросил беглый взгляд на атрибут в отражателе, и он делает то, что я упомянул выше внутренне, кроме они используют шестнадцатеричный эквивалент 401. Я должен буду посмотреть далее вызов, для наблюдения, где исключение поймано, потому что более, чем вероятный это - то, где они делают перенаправление. Это - функциональность, которую необходимо будет переопределить. Я не уверен, можно ли сделать это уже, но я отправлю назад, когда я найду его и даю Вам работу вокруг, если Haacked не видит это и отправляет его самостоятельно.

0
ответ дан 17 December 2019 в 04:54
поделиться

Я сделал некоторый поиск с помощью Google, и это - то, что я придумал:


    HttpContext.Current.Response.StatusCode = 401;

Не уверенный, если это работает или нет, я не протестировал его. Так или иначе это стоит попытки, правильно?:)

-1
ответ дан 17 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: