asp.net mvc自定义成员资格提供程序 - 严格登录缓存到一个应用程序

时间:2010-05-27 06:49:57

标签: asp.net-membership membership-provider

我为asp.net mvc应用程序创建了自定义成员资格提供程序,除了一件事情外它一切正常:
登录到我的应用程序时,我还登录到我使用Visual Studio运行的所有其他asp.net mvc应用程序。我想这个数据是从缓存中提取的,因为当我退出并尝试再次登录其他应用程序时,我被拒绝了。

在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 个答案:

答案 0 :(得分:2)

对你来说可能有点晚了,但也许其他人到达这个页面可能会觉得这很有用。

默认情况下,表单身份验证使用浏览器cookie来保存您的身份验证状态,并且它们的作用域(并限制)为(子)域级别(在您的情况下可能为http://localhost/。)。

这意味着在“localhost”域根(http://localhost/App1http://localhost/App2)下运行的每个应用程序都可以访问相同的身份验证cookie。

您可以通过在web.config中为每个应用程序指定不同的Cookie名称来解决此问题:

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

希望这会有所帮助......

相关问题