Предотвратить определенную роль основного участника от просмотра (или узнавания) каталога администратора? - PullRequest
0 голосов
/ 15 марта 2011

В настоящее время авторизация работает отлично в моем приложении веб-форм asp.net.

Мне было интересно, можно ли было абсолютно запретить всем неаутентифицированным и неавторизованным пользователям открывать каталог администратора.

Если пользователь вводит URL-адрес в каталог администратора, он переносит его на страницу входа (гарантируя, что он существует, что не очень хорошо!), И в случае успеха он сможет получить доступ к администраторукаталог.В целях безопасности есть ли способ предотвратить их перенаправление на страницу входа в систему и, возможно, просто перенаправить их на домашнюю страницу, чтобы им никогда не было гарантировано, что введенный ими URL действителен?

1 Ответ

1 голос
/ 15 марта 2011

Как вы сказали, авторизация работает нормально, поэтому вам придется что-то делать в коде. Попробуйте поместить страницы в папку 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 , он никогда не выполнит блок кода и не перенаправит пользователя на страницу входа .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...