Расширение AuthorizeAttribute для .net MVC… две проблемы/вопроса
-
19-09-2019 - |
Вопрос
Мой первый вопрос: куда мне поместить это специальное расширение, чтобы его можно было вызывать вместо атрибута AuthorizeAttribute по умолчанию?
В настоящее время я создал новый проект, который содержит всю мою бизнес-логику в моем решении MVC.В моем проекте логики есть файл .cs, содержащий все мои классы безопасности.Я попытался добавить класс расширения в этот файл, и на моем контроллере он прекрасно видит класс, и Intellisense не лает на меня, когда я добавляю атрибут, но когда я пытаюсь скомпилировать, я получаю сообщение об ошибке, связанное с типом или пространством имен. невозможно найти.Нужно ли размещать пользовательский атрибут в каком-то специальном месте для компиляции?
Второй вопрос... может быть связан с первым:Когда я пытаюсь переопределить метод AuthorizeCore из AuthorizeAttribute, я передаю System.Web.HttpContextBase как httpcontext.По какой-то причине визуальная студия не может разрешить System.Web.HttpContextBase.Опять же, это может быть связано с тем, где в моем решении сохранен этот класс.Или, возможно, мне нужно куда-то импортировать dll, чтобы расширить это?
Пожалуйста, порекомендуйте.
Решение
Насколько мне известно, класс может находиться в любом проекте библиотеки классов, если вы правильно ссылаетесь на проект на своем веб-сайте.Возможно, вы захотите попробовать перекомпилировать проект — похоже, что он может найти исходные файлы, но кода нет в DLL.
Вероятно, вам потребуется добавить ссылку на System.Web.Abstractions в свой проект.Хотя «базовые» классы находятся в пространстве имен System.Web, они находятся в другой DLL.
Другие советы
У меня это работает, надеюсь, это поможет вам.
using System.Web.Mvc;
public class CustomAuthorize : AuthorizeAttribute
{
}
In controller
[CustomAuthorize]
public class OrderController : Controller
{
}