我正在尝试使用相同的登录表单网址对两个应用程序进行身份验证,所有应用程序都位于同一个域中但位于不同的Web服务器中。因此,如果我将所有应用程序放在同一个Web服务器上工作完美,但在不同的服务器上不起作用。我已经配置了需要身份验证的两个应用程序的Web配置,这是我的代码。
两个应用程序在web.config文件中都是相同的
<forms enableCrossAppRedirects="true" cookieless="UseCookies" loginUrl="http://localhost:90/" />
<machineKey validationKey="[value]" decryptionKey="[value]" validation="SHA1"/>
我的登录网站控制器代码:
[HttpPost]
public void Index(string userName, string password)
{
var cookie = FormsAuthentication.GetAuthCookie(userName, false);
var url = Request.QueryString["ReturnUrl"];
//Here I will check the user credentials
if (userName == "usernameX" && password == "passwordX")
{
Response.Redirect(String.Format("{0}?{1}={2}",
Request.QueryString["ReturnUrl"],
FormsAuthentication.FormsCookieName,
cookie.Value));
}
}
答案 0 :(得分:1)
好吧,我找到了答案。我需要将机器密钥和验证密钥放在登录页面App中,在我的情况下是另一个应用程序,其功能类似于所有应用程序的常见内容页面。并且必须指定您要共享cookie的域。
<forms enableCrossAppRedirects="true" cookieless="UseCookies" loginUrl="http://localhost:90/" domain="mydomain.com"/>