我无法使用常规登录的表单身份验证进行身份验证

时间:2014-12-04 15:52:39

标签: c# asp.net asp.net-mvc authentication forms-authentication

我正在尝试使用相同的登录表单网址对两个应用程序进行身份验证,所有应用程序都位于同一个域中但位于不同的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));
    }
}

1 个答案:

答案 0 :(得分:1)

好吧,我找到了答案。我需要将机器密钥和验证密钥放在登录页面App中,在我的情况下是另一个应用程序,其功能类似于所有应用程序的常见内容页面。并且必须指定您要共享cookie的域。

 <forms enableCrossAppRedirects="true" cookieless="UseCookies" loginUrl="http://localhost:90/" domain="mydomain.com"/>