asp.net mvc нестандартный поставщик членства - строгий кеш входа в систему для одного приложения - PullRequest
1 голос
/ 27 мая 2010

Я создал пользовательский поставщик членства для приложений asp.net mvc, и все это прекрасно работает, кроме одной вещи:
Когда я вошел в свое приложение, я также вошел во все другие приложения mpc asp.net, которые я запускаю с помощью Visual Studio. Я предполагаю, что эти данные извлекаются из кеша, потому что, когда я выхожу из системы и пытаюсь снова войти в другое приложение, меня отвергают.

В webconfig я добавил applicationName для решения этой проблемы, но это не сработало:

<membership defaultProvider="SAMembershipProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear/>
        <add
          name="SAMembershipProvider"
          type="ShinyAnt.Membership.SAMembershipProvider, ShinyAnt"
          connectionStringName ="ShinyAntConnectionString"
          applicationName="MyApp"
          />
      </providers>
    </membership>

    <roleManager defaultProvider="SARoleProvider" enabled="true" cacheRolesInCookie="true">
      <providers>
        <clear/>
        <add
          name="SARoleProvider"
          type="ShinyAnt.Membership.SARoleProvider"
          connectionStringName ="ShinyAntConnectionString"
          applicationName="MyApp"
          />
      </providers>
    </roleManager>

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

1 Ответ

2 голосов
/ 21 сентября 2010

Возможно, вам немного поздно, но, возможно, другие люди, заходящие на эту страницу, могут найти это полезным.

По умолчанию формы проверки подлинности используют куки-файл браузера для сохранения вашего состояния проверки подлинности, и они ограничены (и ограничены) уровнем (под) домена (вероятно, http://localhost/ в вашем случае?).

Это означает, что каждое приложение, работающее в корневом каталоге домена localhost (http://localhost/App1, http://localhost/App2), имеет доступ к одним и тем же файлам cookie аутентификации.

Вы можете обойти эту проблему, указав другое имя файла cookie для приложения в файле web.config:

<authentication mode="Forms">
  <forms name="[cookie name]"></forms>
</authentication>

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

...