Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 表单身份验证中的跨应用重定向_Asp.net_Redirect_Forms Authentication_Cross Application - Fatal编程技术网

Asp.net 表单身份验证中的跨应用重定向

Asp.net 表单身份验证中的跨应用重定向,asp.net,redirect,forms-authentication,cross-application,Asp.net,Redirect,Forms Authentication,Cross Application,我设计了2个web应用程序,并使用表单验证进行单点登录 Web A:包含一个Login.aspx页面 Web B:包含一个OK.aspx页面 当在Web B中访问Ok.aspx时,它将重定向到Web A中的Login.aspx(工作正常) 但问题是,当我成功登录时,我无法重定向到web B中的Ok.aspx FormsAuthentication.RedirectFromLoginPage(username,false); 它尝试重定向到web A而不是web B中的Ok.aspx 我的部分:

我设计了2个web应用程序,并使用表单验证进行单点登录

Web A:包含一个
Login.aspx
页面

Web B:包含一个
OK.aspx
页面

当在Web B中访问
Ok.aspx
时,它将重定向到Web A中的
Login.aspx
(工作正常)

但问题是,当我成功登录时,我无法重定向到web B中的
Ok.aspx

FormsAuthentication.RedirectFromLoginPage(username,false);
它尝试重定向到web A而不是web B中的
Ok.aspx

我的
部分:

网站A:

<authentication mode="Forms">
    <forms name="appNameAuth" 
           path="/" 
           loginUrl="login.aspx" 
           protection="All" 
           timeout="30" 
           enableCrossAppRedirects="true">
    </forms>
</authentication>

Web B:

<authentication mode="Forms">
    <forms name="appNameAuth" 
           path="/" 
           loginUrl="webAdomain/login.aspx" 
           protection="All" 
           timeout="30" 
           enableCrossAppRedirects="true" >
    </forms>
</authentication>


有什么建议吗?

您可以通过在应用程序的每个web.config文件中设置machineKey值,使其匹配来实现这一点

我所说的“匹配”,是指从每个web.config中删除IsolateApps设置(因为这会完全按照它所说的做,这对您正在尝试做的事情是有害的)

接下来,您需要为decryptionKey和validationKey生成新值(与您选择的类型相匹配的值…SHA1等),并将它们复制到每个web.configs中

瞧!一切都应该正常


这里有一个指向Microsoft关于machineKey设置的文章的链接,供参考:

您可以发布两个应用程序的
部分吗?Web a:Web B:这些Web应用程序是否位于同一服务器上并在同一IIS应用程序池中运行?(我知道你在第二个例子中有“webAdomain”,这就是为什么我要问这个问题)@Raelshark:你说得对。我在同一台服务器上运行,在同一个IIS应用程序池中运行。WebAdomain大约是10.22.33.22:8033。WebB中的loginUrl类似于https:10.22.33.44:5555/Login.aspx。因为我希望未经身份验证的用户将重定向到Web A中的登录页面