Теперь любые контроллеры, требующие аутентификации, могут быть производными от 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"
Спасибо Кит.