gpt4 book ai didi

asp.net - 在 ASP.NET 中;如何使用 ASP.NET 成员资格从远程 HTML 页面登录到另一个 ASPX 页面

转载 作者:行者123 更新时间:2023-11-28 00:21:01 25 4
gpt4 key购买 nike

我基本上需要登录到另一个使用 asp.net 成员身份的域。

如果我们有一个 ASP.net web 应用程序,一方面使用 ASP.Net Membership,并且另一方面,来自另一个域的 HTML 页面。

是否可以通过远程 HTML 页面登录到 ASP.NET 网站。

我以前用 Coldfusion 做过这个,但是 ASP.NET 成员使用的是服务器控件。

干杯!

最佳答案

在登录服务器控件下,ASP.NET 使用 MembershipProvider 实现和表单例份验证来对具有 ASP.NET 成员资格的用户进行身份验证。您可以在不使用登录服务器控件的情况下复制这些步骤,方法是手动验证凭据,然后将 FormsAuthentication cookie 附加到 Response

这里有一些可以帮助您入门的资源:

您还可能受益于 Reflecting on the source of the Login 控件,这样您就可以了解当用户使用服务器控件登录时发生的事件的确切顺序。这应该会让您更容易理解如何为您的特定用例复制该功能。

作为旁注,我建议使用自定义 IHttpHandler 实现作为处理登录请求的注入(inject)点,但是有很多方法可以完成此任务

更新,我感觉很慷慨,所以

下面是一个示例处理程序,您可以使用它来通过 ASP.NET 成员资格和 FormsAuthentication(就像服务器控件)登录用户。

此代码假定:

  1. 有一个配置了路由或 web.config 的映射将调用此处理程序。
  2. 请求页面有一个表单指向映射在 web.config 或路由中的 url/路由,并且该页面上的表单包含一个 username 输入字段名称为 usernamepassword 输入字段名称为 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; } }
    }

关于asp.net - 在 ASP.NET 中;如何使用 ASP.NET 成员资格从远程 HTML 页面登录到另一个 ASPX 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com