Теперь любые контроллеры, требующие аутентификации, могут быть производными от AdminControllerBase, а мои публичные контроллеры - производными от MyControllerBase. ОО на помощь.

екущий проект - это внутреннее веб-приложение, созданное с использованием ASP.Net MVC, к которому я добавляю аутентификацию. У меня есть встроенный HTTPModule, который создает IPrincipal с соответствующими ролями. Если пользователь не аутентифицирован, я получаю объект пользователя с ролью "Public"

Поскольку это внутреннее приложение, большинство страниц являются закрытыми и доступны для просмотра только роли «Администратор». Поскольку у меня есть базовый контроллер, я могу сделать это:

[Authorize(Roles="Admin")]
public abstract class MyControllerBase : Controller
{
    ...
}

У меня проблема, хотя некоторые действия доступны для просмотра на общедоступном веб-сайте, и если я приписываю их следующим образом:

[Authorize(Roles="Public")]
public class LoginController : MyController
{
    public ActionResult Index()
    {

    }
}

Страница не загружается, поскольку пользователь не аутентифицирован. Казалось бы, роль «Public» игнорируется унаследованным классом. Кто-нибудь знает, могут ли роли быть переопределены унаследованными классами?

Я также пытаюсь избежать присвоения всех контроллеров Roles = "Admin"

Спасибо Кит.

Ответы на вопрос(2)

Ваш ответ на вопрос