我无法使用具有普通登录名的表单身份验证进行身份验证
本文关键字:身份验证 登录 表单 | 更新日期: 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"/>