2016-02-17 6 views
0

Я создал 2 папки в моем проекте asp.net. (Account and AdminFolder) Я хочу ограничить страницу Register.aspx только для пользователей Admin.Страница входа неправильно перенаправляется

Моя страница Login.aspx находится в папке «Учетная запись», и я включил файл web.config в эту папку со следующим кодом;

<?xml version="1.0"?> 
<configuration> 
<system.web> 
<authorization> 
    <deny users="?"/> 
</authorization> 
</system.web> 
</configuration> 

Я разместил файл Register.aspx в AdminFolder со следующим кодом web.config.

<?xml version="1.0"?> 
<configuration> 
<system.web> 
    <authorization> 
    <allow roles="Admin"/> 
    <deny users="*"/> 
    </authorization> 
</system.web> 
</configuration> 

При тестировании этого подхода, я попытался запустить приложение, перейдя непосредственно к файлу Register.aspx. Как и ожидалось, я перенаправлен на страницу Login.aspx.

URL-адрес появляется в браузере

http://localhost:49319/Account/Login.aspx?ReturnUrl=%2fAdminFolder%2fRegister.aspx 

Я войти в качестве администратора, и я могу видеть, что я зарегистрирован в качестве моих изменений заголовка гиперссылки для выхода из системы. (Я также могу перейти к другим файлам в Учетной записи, чтобы подтвердить, что я вошел в систему). Однако приложение остается на странице входа, а не перенаправляется на страницу Register.aspx.

Ожидалось, что я перейду на страницу Register.aspx при успешном входе в систему.

Даже когда я зарегистрирован как пользователь Admin, я не могу перейти непосредственно на страницу Register.aspx. Я перенаправлен на Login.aspx.

Я подтвердил (посредством моей базы данных Sql Server), что пользователь в моем тестовом примере находится в роли администратора.

Может ли кто-нибудь подтолкнуть меня в правильном направлении? Заранее благодарим за вас время и внимание.

+0

Вы говорите, что не можете перейти непосредственно к URL-адресу http: // localhost: 49319/Account/register.aspx , после авторизации? – DaniDev

+0

Мой файл Register.aspx находится в моем AdminFolder. После входа в систему я не могу перейти непосредственно к http: // localhost: 49319/AdminFolder/Register.aspx –

ответ

0

Попробуйте изменить web.config в AdminFolder к:

<?xml version="1.0"?> 
<configuration> 
<system.web> 
    <authorization> 
    <allow roles="Administrator"/> 
    <deny users="?"/> 
    </authorization> 
</system.web> 
</configuration> 

Как правило, что является RoleName как он появляется в БД.

+0

Спасибо за отзыв. Все еще вернется экран входа в систему. –

+0

Я отредактировал мой ответ для удаления: Надеюсь, что это трюк и ведет себя так, как вы намеревались? – DaniDev

+1

.... и заменить на DaniDev

0

Я вижу свою ошибку. Я разрешал роль администратора, а затем отрицал все роли (включая Admin). Я должен был использовать следующее в AdminFolder

<?xml version="1.0"?> 
<configuration> 
<system.web> 
<authorization> 
    <allow roles="Admin"/> 
    <deny users="?"/> 
</authorization> 
</system.web> 
</configuration> 

Спасибо за все отзывы.

Смежные вопросы