【问题标题】:Gmail credentials for Authentication of ASP.net Website用于 ASP.net 网站身份验证的 Gmail 凭据
【发布时间】:2012-02-08 19:20:24
【问题描述】:

我有两个用于用户名和密码的文本框现在我希望用户输入他们的公司电子邮件 ID 和密码(用户名和密码由谷歌提供支持,网络服务器是谷歌)并登录到 ASP.net 网站。创建用户名会话和密码。此外,我希望用户能够使用相同的 gmail 凭据从 asp.net 网站发送电子邮件。在此先感谢您,我们将不胜感激任何类型的帮助。

【问题讨论】:

  • 您描述了您的代码应该做什么,但您没有提出任何问题。你尝试过什么,遇到过什么问题?
  • 请不要真正要求他们的谷歌帐户的用户名和密码。不应允许任何这样做的程序员靠近计算机。
  • @ M.Babcock 我的问题是如何做到这一点是否可能。@ Ramhound:对不起,但我的意图不是那样,我误解了自己......我想要像 janrain.com 这样的东西这可能吗请帮帮我...

标签: c# asp.net openid gmail


【解决方案1】:

您应该检查 C# 的 OpenId 库。

http://code.google.com/p/dotnetopenid/

这将为您提供一个良好的开端。这样,用户就不必直接使用他的密码,而是会被重定向到为您的网站授予身份验证的提供商。

【讨论】:

    【解决方案2】:

    我想要的答案是这个,这个代码工作正常。我没有在会话和数据库中的任何地方存储密码。

    <form id="form1" runat="server">  
          <div id="loginform">  
            <div id="NotLoggedIn" runat="server">  
              Log in with <img src="http://www.google.com/favicon.ico" />  
                <asp:Button ID="btnLoginToGoogle" Runat="server" Text="Google"     OnCommand="OpenLogin_Click"  
                  CommandArgument="https://www.google.com/accounts/o8/id" />  
              <p /><asp:Label runat="server" ID="lblAlertMsg" />  
            </div>  
          </div>  
        </form>
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using DotNetOpenAuth.OpenId;
    using DotNetOpenAuth.OpenId.RelyingParty;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            OpenIdAjaxRelyingParty rp = new OpenIdAjaxRelyingParty();
            var r = rp.GetResponse();
            if (r != null)
            {
                switch (r.Status)
                {
    
    
           case AuthenticationStatus.Authenticated:
                    NotLoggedIn.Visible = false;
                    Session["GoogleIdentifier"] = r.ClaimedIdentifier.ToString();
                    Response.Redirect("Default2.aspx");
                    break;
                case AuthenticationStatus.Canceled:
                    lblAlertMsg.Text = "Cancelled.";
                    break;
            }
    
        }
    
    }
    protected void OpenLogin_Click(object sender, CommandEventArgs e)
    {
        string discoveryUri = e.CommandArgument.ToString();
        OpenIdRelyingParty openid = new OpenIdRelyingParty();
        var b = new UriBuilder(Request.Url) { Query = "" };
        var req = openid.CreateRequest(discoveryUri, b.Uri, b.Uri);
        req.RedirectToProvider();
    }
    }
    

    但我仍然有进一步的疑问是如何获取用户登录以创建会话的用户名......???可以做到我在某处看到它......

    【讨论】:

    • 用户名(而不是电子邮件地址)将在成功登录并从 Google 重定向后返回给您。 google.com 将要求用户授权您的应用甚至查看电子邮件地址(仅在首次成功登录后),并且只有在此之后,您才能让用户返回该电子邮件地址。不过,我不知道它的技术性。
    • @Hari 我仍然没有找到成功登录后获取用户电子邮件ID的解决方案......???是否可以获得电子邮件ID。?
    【解决方案3】:

    不,Google 不会让您这样做。您必须执行类似于 StackOverflow 正在执行的操作(提供 OpenID 功能以验证 at google.com)。

    【讨论】:

    • janrain.com 这样的东西可以为我做。只有他才能从同一个 asp.net 应用程序发送电子邮件
    • 我不这么认为——我只是在那里观看了一段演示视频,谷歌的登录页面显示在一个弹出窗口中。因此,虽然您当然可以在您的页面上填充 uid/pwd 文本框,声称他们将在 google 登录,但实际上只有傻瓜才会在没有先检查 url 的情况下将它们输入那里。所以,即使你成功了,我怀疑你会有很多用户。
    • 我想要的答案是这个
    • @Hari 并不苛刻。我没有正确提问。
    猜你喜欢
    • 2014-10-15
    • 2012-03-23
    • 2021-03-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多