extensão AuthorizeAttribute para .NET MVC ... dois problemas / questões
-
19-09-2019 - |
Pergunta
minha primeira pergunta é, onde posso colocar essa extensão personalizada de modo que ele pode ser chamado em vez do padrão AuthorizeAttribute?
Actualmente, eu criei um novo projeto que contém toda a minha lógica de negócios dentro de minha solução MVC. Eu tenho um arquivo .cs dentro do meu projeto de lógica que contém todas as minhas aulas de segurança. Eu tentei adicionar uma classe de extensão para esse arquivo e no meu controlador, que vê a classe muito bem e intellisense não está latindo para mim quando eu adicionar o atributo, mas quando eu tento compilar, eu recebo um erro que o tipo ou namespace Não pode ser achado. Será que a necessidade atributo personalizado para ser alojado em algum lugar especial, a fim de compilação?
Segunda pergunta ... pode estar relacionado com o primeiro: Quando eu estou tentando substituir o método AuthorizeCore de AuthorizeAttribute, eu estou passando em System.Web.HttpContextBase como HttpContext. Por alguma razão visual studio não pode resolver System.Web.HttpContextBase. Novamente, isto pode estar relacionado com onde eu tenho essa classe salvo na minha solução. Ou talvez eu preciso para importar um lugar dll para estender isso?
Por favor, informe.
Solução
Tanto quanto eu estou ciente da classe pode estar em qualquer projeto de biblioteca de classe, desde que você tenha devidamente referenciados o projeto em seu Web site. Você pode querer tentar recompilar o projeto -. Parece que ele é capaz de encontrar os arquivos de origem, mas o código não está na DLL
Você provavelmente precisa adicionar uma referência para System.Web.Abstractions ao seu projeto. Enquanto as classes "base" estão no namespace System.Web, eles são encontrados em uma DLL diferente.
Outras dicas
Ele funciona para mim, espero que isso irá ajudá-lo.
using System.Web.Mvc;
public class CustomAuthorize : AuthorizeAttribute
{
}
In controller
[CustomAuthorize]
public class OrderController : Controller
{
}