#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>