членство в apt.net не использует фиксированную конфигурацию - PullRequest
0 голосов
/ 23 июня 2011

В провайдере членства есть механизмы для обеспечения аутентификации и авторизации на уровне страницы с использованием файлов web.config и защиты для методов, использующих декораторы.

Я довольно новичок в использовании этого asp.net http://msdn.microsoft.com/en-us/library/yh26yfzy(v=VS.90).aspx

Мой вопрос заключается в том, есть ли способ НЕ хранить их в файлах и коде .config, а размещать их в базе данных sql, чтобы можно было управлять администрированием, чтобы обеспечить несколько «ролей» и безопасность в некоторых динамическихfashion?

Примеры того, что я имею в виду:

файл web.config:

<?xml version="1.0"?>
<!-- 
    Note: As an alternative to hand editing this file you can use the 
    web admin tool to configure settings for your application. Use
    the Website->Asp.Net Configuration option in Visual Studio.
    A full list of settings and comments can be found in 
    machine.config.comments usually located in 
    \Windows\Microsoft.Net\Framework\v2.x\Config 
-->
<configuration>
    <appSettings/>
    <connectionStrings/>
     <system.web>
      <authorization>
        <allow roles="Administrators" />
        <deny users="*"/>
      </authorization>
    </system.web>
</configuration>

Пример фрагмента украшенного метода:

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
[PrincipalPermission(SecurityAction.Demand, Role = "Supervisors")]
protected void UserGrid_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

В частности, меня могут заинтересовать примеры, в которых шаблон / практика модели данных Стороны базы данных может использоваться для облегчения как авторизации, так и аутентификации конкретного пользователя и не имеет ролей и таковых, определенных в конфигурации или коде.Я скучаю по чему-то, что я должен знать / знать здесь?

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Приведенные вами примеры имеют данные авторизации. Оба определяют уровень доступа к ресурсу asp.net для определенных ролей. Итак, что вы на самом деле спрашиваете, есть ли способ настроить авторизацию в ASP.NET способом, основанным на SQL, чтобы вы могли изменить роли, которые имеют доступ к вещам из SQL, без непосредственного изменения источника или конфигурации.

Я не знаю никакого способа сделать это напрямую, но я мог бы предложить подключить вашу собственную структуру ролей / групп в SQL к встроенной структуре ролей, чтобы роль ASP.NET определяла ресурс и уровень доступа, и группа / роль SQL может изменяться динамически по мере того, как вы будете описывать и следовать модели данных вашей партии.

0 голосов
/ 23 июня 2011

Одним из способов будет создание промежуточной таблицы Group, где Users назначено Groups, а Groups - Roles.

Итак, ваше multiple roles требование будет переведено на multiple groups.

[PrincipalPermission(SecurityAction.Demand, Role = "SingleRole")]
protected void UserGrid_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

Вам потребуется написать пользовательский RoleProvider для реализации этого.

...