Пользовательский поставщик членства asp.net mvc - строгий кеш входа в одно приложение

Я создал настраиваемого поставщика членства для приложений asp.net mvc, и все работает нормально, за исключением одного: когда я вошел в свое приложение, я также вошел во все другие приложения asp.net mvc, которые я запускаю с помощью 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>

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


person ilija veselica    schedule 27.05.2010    source источник


Ответы (1)


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

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

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

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

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

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

person Wiebe Tijsma    schedule 21.09.2010
comment
Привет, Зидад, я только что увидел твой ответ, и теперь все стало намного яснее. Спасибо! - person ilija veselica; 11.10.2010