Членство в asp.net: продление роли? - PullRequest
3 голосов
/ 02 апреля 2010

Я смотрю на членство в asp.net, и, похоже, оно предоставляет все, что мне нужно, но мне нужны какие-то особые функции ролей.

В настоящее время я могу добавить пользователя к роли, отлично.

Но мне также нужно иметь возможность добавлять разрешения для ролей ..

т.е.

Роль: редактор Разрешения: Может просматривать меню редактора, Может писать в таблицу редакторов, Может удалять записи в таблице редакторов.

В настоящее время это не поддерживается. Идея заключается в том, чтобы создать в моей программе параметр администратора для создания роли, а затем назначить разрешения для роли, чтобы сказать «разрешить пользователю просматривать определенную часть приложения». , "разрешить пользователю открывать пункт меню"

Есть идеи, как бы я реализовал что-то подобное?

Я предполагаю, что пользовательский поставщик ROLE, но мне было интересно, существовало ли какое-то расширение фреймворка уже без моего собственного?

Или кто-нибудь знает хороший учебник о том, как решить эту проблему?

Я вполне доволен тем, что провайдер asp.net SQL создал с точки зрения таблиц и т. Д. ... но я думаю, что мне нужно расширить это, добавив еще одну таблицу с именем RolesPermissions

и затем я предполагаю :-) добавление какого-то перечисления в таблицу для каждого действительного разрешения ??

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 02 апреля 2010

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

HttpContext.Current.User.IsInRole("rolename")

Вы можете создать класс / или таблицу с вашими разрешениями и зависеть от роли, которой принадлежит пользователь, открывать, закрывать, разрешать и т. Д. Много размышлений на той же странице. У меня есть такая идея в моих программах, это очень просто.

Вот идея ...

public enum csPermissions
{
    pActionDelete = 1,   
    pActionEdit = 2 , 
    ...more actions...
}

private int[] AdminPermission = { 
    (int)csPermissions.pActionEdit, 
    (int)csPermissions.pActionDelete, 
    ....
};

private int[] BackOfficePermission = { 
    (int)csPermissions.pActionEdit, 
    ....
}; 

public static bool IsThisAllowed(csPermissions AskPermitForThisAction)
{
    ... questions here for all users roles...
    ... here is only an example .....
    if (HttpContext.Current.User.IsInRole("Administator")))
    {
        for (int i = 0; i < AdminPermission.Length; i++)
            if (AdminPermission[i] == (int)AskPermitForThisAction)
                return true;
    } 

    ...  
    return false;
 }

Надеюсь, эта помощь.

0 голосов
/ 21 апреля 2010

Вы можете использовать платформу для ограничения доступа ко всем страницам или каталогам на основе ролей. Это можно настроить в элементе авторизации web.config. http://msdn.microsoft.com/en-us/library/wce3kxhd.aspx

Кроме того, если вы используете SiteMap для своего меню и настроили авторизацию, вы можете использовать ограничение безопасности для ограничения меню. http://www.google.com/search?q=asp.net+security+trimming

...