2009-08-07 3 views
1

Я изо всех сил пытаюсь выбрать, что использовать для аутентификации и авторизации для моего .Net-приложения. Я использую ASP.Net MVC с C#. В Java я нахожу Spring Acegi Securiyy очень простым и удобным для реализации, чтобы защищать URL-адреса, скрывать меню и кнопку и даже защищать мои методы.Аутентификация и авторизация в .Net

Также я бы использовал Windows Active directory для хранения профиля пользователя.

Что доступно в .Net мире, который похож на Spring Acegi. Во всяком случае вот что я хочу -

  1. конфигурации типа XML для обеспечения URLs на основе ролей, то есть только роли администратора могут получить доступ к/администратору/* страницы и т.д.
  2. На интерфейсе я хочу, чтобы скрыть меню и кнопки на основе на роли, например if (роль - Admin) showButton.
  3. Хотя этого достаточно, но я хотел бы также защитить свой бизнес-уровень. Это потому, что я выставил webservice.

Я знаю, что могу написать custome, но зачем изобретать колесо, если доступна какая-либо библиотека .net.

ответ

1
  1. конфигурации XML? Нет, не с базовым материалом MVC. С помощью WebForms вы можете утверждать, что правила в web.config были основаны на XML, но они не применяются к ASP.NET MVC - НЕ ИСПОЛЬЗУЙТЕ путь/местоположение в web.config. Авторизация контролируется атрибутами класса контроллера. Однако кто-то написал XML authorization module, который может быть подходящим
  2. В пользовательском интерфейсе вы можете сделать это в представлении, если хотите. Вы можете скрыть на основе проверки подлинности против неаутентифицированное как так

    Привет подлинности пользователю

    , и вы также можете использовать объект request.user, чтобы быть более конкретным

    Привет от имени привилегированного пользователя

  3. Вы можете защищенный веб услуги с именами пользователей и паролями, однако, если вы хотите передать личность с веб-сайта на веб-службу, потому что веб-сайт называет это более сложным. Здесь уже много вопросов и ответов об аутентификации и авторизации WCF.

0

Это правда. У сети есть очень мощный двигатель. Вам нужно взглянуть на существующую реализацию RoleProvider и MembershipProvider или создать свою собственную. В web.config вам нужно указать, какие из поставщиков, которые будут использовать и с наименьшим указанием папок, будут защищены ролью. Для реализации безопасности на уровне бизнес-логики вы просто должны laverage доступны в любом месте Membership.GetUser, Roles.IsUserInRole ...

-1

Это не реальный ответ, но IMVHO, подумайте о реализации своей логики. Это правда, колесо уже было изобретено в этом случае, но я нахожусь изо всех сил, когда использую аутентификацию и авторизацию Asp.NET. Вы можете работать очень быстро, и это хорошо, если у вас простой сценарий. Когда вы хотите выйти за рамки этого, вы рискуете потерять все время, которое вы приобрели изначально. Но, как я уже говорил, это только мое мнение.

+0

Возможно, вы могли бы поделиться некоторыми сведениями о сценарии, в котором вы обнаружили, что механизмы аутентификации и авторизации ASP.NET по умолчанию недостаточны? – mookid8000

+0

Не сказать, что этого недостаточно. Просто говоря, что, когда я хочу делать более сложные (грязные?) Вещи, время, которое я трачу на реализацию по специальному методу, меньше времени, которое я мог бы потратить выше метода Asp.NET. Как я уже говорил, это IMVHO. – ccalboni

Смежные вопросы