我为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>
是否有任何我忘记实现的方法来解决这个问题,或者是其他什么方法?
答案 0 :(得分:2)
对你来说可能有点晚了,但也许其他人到达这个页面可能会觉得这很有用。
默认情况下,表单身份验证使用浏览器cookie来保存您的身份验证状态,并且它们的作用域(并限制)为(子)域级别(在您的情况下可能为http://localhost/。)。
这意味着在“localhost”域根(http://localhost/App1,http://localhost/App2)下运行的每个应用程序都可以访问相同的身份验证cookie。
您可以通过在web.config中为每个应用程序指定不同的Cookie名称来解决此问题:
<authentication mode="Forms">
<forms name="[cookie name]"></forms>
</authentication>
希望这会有所帮助......