表单身份验证cookie的相对路径

时间:2011-03-30 22:18:37

标签: cookies forms-authentication

<authentication mode="Forms">
  <forms name="ASPAuth" 
         path="/Admin" 
         timeout="20" 
         requireSSL="false" 
         slidingExpiration="true" />
</authentication>

在我的开发系统上,我在web.config中有上述内容。如果我使用VS Web服务器,这工作正常。但是当我使用虚拟目录在我的IIS7上托管同一个网站时,却没有。

VS Url看起来像:http://localhost:xxxx/

IIS网址如下:http://MachineName/MyApp/

通过IIS访问网站时,IsAuthenticated始终为false。我发现这是因为Cookie被分配到http://MachineName/Admin/而不是http://MachineName/MyApp/Admin

我是如何制作的,以便“管理员”是相对路径?我尝试了path =“〜/ Admin”,但这不起作用。

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试将转换放入Web.Release.Config:

<authentication mode="Forms">
  <forms name="ASPAuth"
     path="/MyApp/Admin"
     timeout="20"
     requireSSL="false"
     slidingExpiration="true"
     xdt:Transform="Replace" 
     xdt:Locator="Match(key)"/>
</authentication>

答案 1 :(得分:1)

答案:

在这个阶段根本不可能做到这一点。除非您愿意编写自己的HttpModule,否则不能在web.config中为表单身份验证路径设置带有tilda(〜)的相对路径。

查看此帖(和评论): http://www.west-wind.com/weblog/posts/2008/Jan/20/Forms-Authentication-and-path-in-the-forms-Tag