我无法使用具有普通登录名的表单身份验证进行身份验证

本文关键字:身份验证 登录 表单 | 更新日期: 2023-09-27 18:33:04

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

我无法使用具有普通登录名的表单身份验证进行身份验证

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

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