2013-09-06 4 views
0

Я использую C# и ASP.NET. Я имею эту файловую структуру на моем сайте:asp.net Аутентификация Windows Forms для папки администратора

~\Admin\SecuredFolder\ManageWebsite.aspx 
~\Admin\Login.aspx 
~\Homepage.aspx 

Что я пытаюсь достичь довольно много простого, но я предполагаю, что все мои попытки до сих пор оказались слишком сложными, и я своим родом замешательства.

мои цели:

  • Homepage.aspx и Login.aspx должны быть открытыми для всех (анонимных пользователей)
  • SecuredFolder должны быть для зарегистрированных пользователей (например: пользователи администратора). Тот, кто пытается получить доступ к любой странице в этой папке (без регистрации), должен быть перенаправлен на страницу входа.
  • После успешного Войти будет успешно перенаправлять ManageWebsite.aspx

Я знаю, что это должен быть простой реализацией, но я чувствую, что я не усвоил его еще правильно.

Надеюсь, что любой из вас мог бы привести мне пример.

+0

Позвольте мне знать, если он работает для вас. – Bibhu

ответ

1

Поместите этот WebConfig в securedfolder ~\Admin\SecuredFolder\

<?xml version="1.0"?> 
<configuration> 

    <system.web> 
    <authorization> 
     <allow roles="admin" /> 
     <deny users="?"/> 
    </authorization> 
    </system.web> 

</configuration> 

положить это в WebConfig корневой папке ~\

<authentication mode="Forms"> 
     <forms loginUrl="~/Admin/Login.aspx" timeout="2880" /> 
    </authentication> 
    <location> 
    <system.web> 
     <authorization> 

     <allow users="*"/> 

     </authorization> 
    </system.web> 
    </location> 
+0

Прямо сейчас моя проблема в том, что после того, как я попытался войти в систему, защищенная страница все еще возвращает меня обратно на страницу входа. Предполагая, что я использую определенную роль, которую я хотел бы разрешить (например, ответ Шриниваса выше), как должен вести себя мой Login.aspx? а также, что, если у меня есть много страниц и папок на моем корне, я бы хотел разрешить доступ (помимо homepage.aspx)? Должен ли я писать только путь = "/"? это было бы ошибкой? – Popokoko

+0

@Popokoko проверить обновленный ответ за это –

+0

Спасибо, проблема в том, что страница входа в систему работает неправильно. Я просто получил два текстовых поля и кнопку, которые пытаются перенаправить, я не уверен, как позаботиться о роли. – Popokoko

0

К корневой web.config добавить их, чтобы сделать главную страницу и страницы ASPX Входа общественного

<location path="Homepage.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="Login.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

Внутри Secure папки добавить файл web.config и что добавить их, чтобы все содержимое внутри SecuredFolder быть доступен только для Admin роли

<authorization> 
    <allow roles="Admin"/> 
    <deny users="*"/> 
    </authorization> 

После успешной аутентификации в Login.aspx, проверьте роли пользователей, если роль состоит в том Admin, перенаправляет его на ManageWebsite.aspx page

+1

1. Что, если у меня есть еще много страниц, таких как homepage.aspx, и я не хочу помещать их все в качестве пути местоположения в web.config? не могу ли я каким-то образом позволить всем им быть «публичными»? 2. Я не уверен в последней части «проверки роли пользователей», как мне это реализовать?прямо сейчас у меня есть 2 текстовых поля и кнопка входа на мою страницу login.aspx. 3. Должен ли я настроить что-то, связанное с формами окон в web.config? – Popokoko

0

Поместите web.config в вашем SecuredFolder и добавить

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.web> 
     <authorization> 
      <allow roles="admin" /> 
      <deny users ="*" /> 
     </authorization> 
    </system.web> 
</configuration> 

Теперь только позволит вошедшего в (администратора) пользователя доступ к его содержимому.

Вы также можете добавить <authentication> в ваш корень web.config, чтобы автоматически перенаправлять неавторизованного пользователя на страницу входа.

<authentication mode="Forms"> 
<forms loginUrl="~\Admin\Login.aspx" timeout="20" slidingExpiration="true" cookieless="AutoDetect" protection="All" requireSSL="false" enableCrossAppRedirects="false" defaultUrl="Homepage.aspx" path="/"/> 
</authentication> 
Смежные вопросы