Аутентификация по пользовательским формам + MVC3 + AuthorizeAttribute - PullRequest
3 голосов
/ 20 декабря 2011

Я по существу делаю это это .Однако всякий раз, когда я использую встроенный AuthorizeAttribute, инфраструктура MVC (я предполагаю) никогда не смотрит на моего принципала, чтобы определить, есть ли у пользователя правильные роли.Он продолжает пытаться создать новый файл MDF в каталоге app_data, и из-за того, что у него нет привилегий, он взрывается.

Это ожидаемое поведение, и я должен получить свой собственный AuthorizeAttribute и самостоятельно проверить принципал?

Еще одно странное поведение, на которое следует обратить внимание, это то, что у меня есть два сайта в одном домене, для которых я делаю единый вход.На любом сайте я использую одну и ту же библиотеку классов для воссоздания своего пользовательского принципала в AuthenticateRequest, и при отладке я вижу, что принципал правильно устанавливается на каждом сайте.Тем не менее, сайт 1 (тот, который аутентифицирует пользователя) использует встроенный AuthorizeAttribute, и он отлично работает, но сайт 2 пытается создать файл MDF, когда вызывается любое действие, имеющее AuthorizeAttribute.

Ответы [ 2 ]

12 голосов
/ 20 декабря 2011

Хорошо, я понял, мне пришлось добавить это в мой веб-конфигурацию под system.webServer.Это удаляет HttpModule, который заменяет мой принципал.

<modules runAllManagedModulesForAllRequests="true">
    <remove name="RoleManager" />
</modules>
2 голосов
/ 20 декабря 2011

По умолчанию новое приложение MVC3 использует SqlMembershipProvider в качестве механизма авторизации по умолчанию и пытается сохранить детали в базе данных SQL Express (файл MDF).

Поэтому попробуйте очистить это в файле web.config.:

<membership>
   <providers>
      <clear />
   </providers>
</membership>

Пока вы правильно реализуете все объекты безопасности (IPrincipal, IIdentity) и расшифровываете билет проверки подлинности форм на Application_AuthenticateRequest, встроенный [Authorize(Roles="RoleName")] долженработать для вас.

В той ссылке, которую вы разместили, это существенно то, что мы делаем, и это прекрасно работает.

...