跨应用程序表单身份验

Fly*_*wat 8 asp.net authentication cruisecontrol.net

我正在为我的公司开发一个基于Web的内部工具.此工具的一部分是另一个应用程序(Cruise Control Dashboard),它在我的根应用程序下运行在自己的虚拟目录中.

我想通过在其上设置表单身份验证以及在根应用程序中使用登录表单来限制对此内部应用程序的访问.

我将以下内容放入根应用程序web.config中:

<location path="ccnet">
  <system.web>
    <authentication mode="Forms">
        <forms loginUrl="/default.aspx" timeout="5000"/>
    </authentication>
    <authorization>
      <allow users="?"/>
      <deny users="?"/>
    </authorization>        
  </system.web>    
</location>
Run Code Online (Sandbox Code Playgroud)

但是,表单身份验证似乎不起作用,当我直接访问该应用程序时,它不会重定向回登录页面.

我有一种感觉我将<allow>和<deny>标签设置错误.有人可以澄清吗?

Fly*_*wat 8

您可能还需要将path ="/"放入

就是这样!

所以,总结,顺便说一句;

在root web.config中添加:

<machineKey validationKey="AutoGenerate" decryptionKey="AutoGenerate" validation="SHA1" />
Run Code Online (Sandbox Code Playgroud)

必须这样做,因为默认情况下它是"AutoGenerate,IsolateApps".

其次,您必须在两者中将表单Auth cookie命名为相同,我使用location标记在我的root中完成了所有操作:

<authentication mode="Forms">
   <forms name="ccAuth" loginUrl="/default.aspx"  path="/" timeout="5000"/>
</authentication>
<authorization>
   <deny users="?"/>
</authorization>
Run Code Online (Sandbox Code Playgroud)

最后:

<location path="ccnet">
  <system.web>
    <authentication mode="Forms">
      <forms name="ccAuth" loginUrl="/default.aspx"  path="/" timeout="5000"/>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>      
  </system.web>    
</location>
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助.这是一个难题.

  • 我的天啊!在machineKey元素中隔离应用程序!谢谢谢谢你,我的头发现在可以长了:) (2认同)

Dav*_*ier 1

我认为您可能还需要将 path="/" 放在 <forms 标记中。抱歉,我已经有一段时间没有这样做了