Pergunta

Eu tenho um atributo autorizar personalizado em meus controladores e não está sendo chamado em requisições Ajax expirados. Eu estou usando autenticação de formulários, e chamar métodos do controlador via $ .ajax (jQuery). O pedido ajax retorna a minha página de login e eu não parecem ser capazes de interceptar isso.

Obrigado.

UPDATE: Eu descobri o porquê: Eu comentei na seção autorização no meu web.config como segue:

  <authentication mode="Forms">
      <forms loginUrl="/Login" timeout="1" slidingExpiration="false"/>
    </authentication>
    <!--<authorization>
      <deny users="?"/>
    </authorization>-->

Agora o meu filtro de autorização está sendo chamado, mesmo após a expiração. Acontece que as regras de autorização Web.config ter precedência sobre filtros Autorizar.

Foi útil?

Solução

Não devolva 401 não autorizado. intercepta que e redirecionamentos ASP.NET para a página de login definido no web.config. Para AJAX, em vez retornar algo mais, como 403.

Outras dicas

Use context.HttpContext.Request.IsAjaxRequest() para detectar se o pedido é um pedido Ajax ou não. Confira mais aqui:

Autorizar atributo e jquery AJAX no asp.net MVC

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top