Я разработал собственные классы для поставщиков пользовательских членства и роли.Проблемы с IIS и поставщиком пользовательского членства + поставщик пользовательских ролей
Все работает локально. Тем не менее, после развертывания решения для IIS для тестирования, мое действие для входа, похоже, работает (по крайней мере, действие проверяет имя пользователя + пароль, и пользователь оказывается аутентифицированным), но всякий раз, когда я пытаюсь получить доступ к действиям, которые украшены аннотациями вроде
[Authorize(Roles="Employee, Admin")]
Я постоянно переадресовываюсь на страницу входа, как если бы у пользователя не было необходимой роли (хотя он и есть).
Поэтому локально приложение успешно проверяет пользователей и проверяет роли аутентифицированного пользователя перед выполнением действий (таким образом, я предполагаю, что мои методы на обоих классах верны), но в IIS похоже, что поставщик роли не работает должным образом , Кто-нибудь знает, где я могу быть неправ, или как я могу лучше рассмотреть мою проблему?
В моей Web.Config:
<system.web>
(...)
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<membership defaultProvider="CustomMembershipProvider">
<providers>
<clear />
<add name="CustomMembershipProvider" type="MyApplication.Infrastructure.CustomMembershipProvider" connectionStringName="DBEntities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="CustomRoleProvider">
<providers>
<clear />
<add name="CustomRoleProvider" type="MyApplication.Infrastructure.CustomRoleProvider" connectionStringName="DBEntities" applicationName="/" />
</providers>
</roleManager>
(...)
</system.web>
Спасибо заранее.
EDIT: Дополнительная информация.
Я только изменил один из моих действий этой заметки просто [Авторизоваться], и это работает. Поэтому я считаю, что аутентификация работает, и проблема должна быть связана с поставщиком ролей.
Я использую Entity Framework для моей модели данных, con. строка выглядит следующим образом:
мне удалось зарегистрировать пользователь и войти, используя эту вновь созданную учетную запись, которая будет означать, что соединение DB и поставщик пользовательского членства работают правильно (?).
A «@foreach (String ул в Roles.GetRolesForUser (Пользователь.Идентичность.Имя)) {@} ул печатает роль на местном уровне и ничего не печатается при развертывании.
Обнаруживает строку подключения? – Fals
Вы уверены, что роли существуют, и пользователям назначены роли? –
Да, просто дважды проверено. Экземпляр DB, который я использую для тестирования локально, тот же, который я использую, когда я развертываю в IIS. Поэтому, если роли существуют и распознаются локально, проблемы не должно быть. – user1987392