Ограничить доступ к страницам администратора только для пользователей с правами администратора

#c# #asp.net #sql-server

#c# #asp.net #sql-server

Вопрос:

У меня есть ASP.NET Веб-сайт. Я хочу ограничить папку admin, чтобы только пользователи, которые имеют ‘админ роль в этом экземпляре SQL Server таблицы: tbl_Users_Admin столбцов, имеющих UID , PWD , Name , Role , Status ). Остальные все корневые страницы, которые я хочу сделать общедоступными для любого пользователя.

Я не буду использовать ASP.NET Членство.

Пользователю-администратору просто присваивается URL (https://www.Website.com/Admin/Login.aspx ).

У меня есть две страницы Login.aspx в корневом каталоге, а также в папке Admin.

Я пытался решить это с помощью аутентификации в формах, но я не могу это решить.

На нескольких форумах предлагалось создать два разных файла Web.Config (один для корневой папки веб-сайта, а другой для папки администратора), но мне это кажется неэффективным способом.

Но мне не удалось решить это иначе.

Хотя я пытался сделать это, используя следующее в файле web.config в root:

   <location path="Admin">
  <system.web>
<authentication mode="Forms">
      <forms loginUrl="/Admin/Login.aspx" name=".ASPXFORMSAUTH" defaultUrl="/Admin/Login.aspx" >
      </forms>
    </authentication>
    <authorization>
    <allow roles="administrators" />
      <allow users="admin" />
      <deny users="?" />
    </authorization> 
    <sessionState mode="InProc" cookieless="false"  timeout="20">
    </sessionState>
    <customErrors defaultRedirect="~/Admin/ErrorPages/Error.aspx" mode="On">
      <error statusCode="404" redirect="~/Admin/ErrorPages/Error.aspx" />
    </customErrors>
    <compilation debug="true">
         <codeSubDirectories>
          <add directoryName="CSharp"/>
          <add directoryName="VB"/>
        </codeSubDirectories>
     </compilation>
    </system.web>
  </location>
  

И для остальных корневых страниц (общедоступных страниц):

 <system.web>
    For rest of the root pages (Public Pages)
</system.web>
  

Комментарии:

1. <путь к местоположению=»Admin»> <system.web> <режим аутентификации = «Forms»> <forms loginUrl=»/Admin/Login.aspx» name=». ASPXFORMSAUTH» defaultUrl=»/Admin/Login.aspx» > </forms> </authentication> <авторизация> <разрешить роли =»администраторы» /> <разрешить пользователям =»admin» /> <запретить пользователям =»?» /> </authorization> <SessionState mode=»InProc» cookieless=»false» timeout =»20″> </SessionState> </compilation> </system.web> </location> — Для остальной части корневые страницы (Общедоступные страницы):- <system.web> БЛА-БЛА-БЛА </system.web>

Ответ №1:

Вам не нужно добавлять папку Admin в web.config.

Просто добавьте следующее в web.config под configuration разделом.

 <location path="Admin">
    <system.web>
        <authorization>
            <deny users="?"/>
            <allow roles="Admin"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>