我基本上需要登录到另一个使用 asp.net 成员资格的域。
如果我们一方面有一个使用 ASP.Net Membership 的 ASP.net Web 应用程序,另一方面有一个来自另一个域的 HTML 页面。
是否可以通过远程 HTML 页面登录 ASP.NET 网站。
我以前用 Coldfusion 做过这个,但是 ASP.NET 成员使用的是服务器控件。
干杯!
我基本上需要登录到另一个使用 asp.net 成员资格的域。
如果我们一方面有一个使用 ASP.Net Membership 的 ASP.net Web 应用程序,另一方面有一个来自另一个域的 HTML 页面。
是否可以通过远程 HTML 页面登录 ASP.NET 网站。
我以前用 Coldfusion 做过这个,但是 ASP.NET 成员使用的是服务器控件。
干杯!
在登录服务器控件下,ASP.NET 使用 MembershipProvider 实现和表单身份验证来对具有 ASP.NET 成员资格的用户进行身份验证。您可以在不使用登录服务器控件的情况下复制这些步骤,方法是手动验证凭据,然后将FormsAuthenticationcookie 附加到Response.
以下是一些可以帮助您入门的资源:
您也可能会从反映Login控件的源代码中受益,因此您可以了解用户使用服务器控件登录时发生的事件的确切顺序。这应该使您更容易理解如何为您的特定用例复制该功能。
作为旁注,我建议使用自定义IHttpHandler实现作为处理登录请求的注入点,但是有很多方法可以完成此任务。
下面是一个示例处理程序,您可以使用它来使用 ASP.NET Membership 和 FormsAuthentication 登录用户(就像服务器控件一样)。
此代码假定:
请求页面有一个表单,该表单指向在 web.config 或路由中映射的 url/route,并且该页面上的表单包含一个username带有 name的输入字段username和一个带有 name 的password输入字段password。
public class LoginHandler : IHttpHandler
{
void IHttpHandler.ProcessRequest(HttpContext context)
{
string username = context.Request["username"];
string password = context.Request["password"];
if (!string.IsNullOrWhiteSpace(username) && !string.IsNullOrWhiteSpace(password) && Membership.Provider.ValidateUser(username, password))
{
FormsAuthentication.SetAuthCookie(username, true);
RenderUserLoggedInResponse(context.Response,username);
}
else FormsAuthentication.RedirectToLoginPage("loginfailure=1");
}
private static void RenderUserLoggedInResponse(HttpResponse response, string username)
{
response.Write(string.Format("You have logged in successfully, {0}!", username));
response.End();
}
bool IHttpHandler.IsReusable { get { return true; } }
}