Как вы сказали, авторизация работает нормально, поэтому вам придется что-то делать в коде. Попробуйте поместить страницы в папку admin внутри отдельной главной страницы и добавить в page_load
этой (admin) главной страницы следующее:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.User.Identity.IsAuthenticated || !Page.User.IsInRole("admin"))
{
Response.Redirect("to some other page");
}
}
Хотя это работает, но не является хорошим решением, так как главная страница вызывается после страницы содержимого, поэтому, если вы используете какую-то тяжелую работу, например попадание в базу данных, это уже произошло, прежде чем вы перенаправили пользователя.
Другой вариант - поместить вышеуказанный код во все содержимое и другие страницы aspx в папке администратора. Или вы можете попробовать создать базовый класс для страниц в папке admin и реализовать эту роль и проверку подлинности в этом базовом классе.
PS: - вам также нужно снять ограничение на папку из web.config
, потому что если web.config
ограничивает доступ пользователей к папке admin , он никогда не выполнит блок кода и не перенаправит пользователя на страницу входа .