0

简而言之,我正在创建一个用户需要拥有 gmail 帐户才能访问的应用程序。如何检查数据库以查看用户电子邮件是否存在,如果不存在则重定向到 Google 主页?

这是我用来获取电子邮件地址的代码:

if (!IsPostBack)
        {
            ClaimsPrincipal principal = HttpContext.Current.User as ClaimsPrincipal;
            if (null != principal)
            {

                foreach (Claim claim in principal.Claims)
                {
                    if (claim.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
                    {
                        Session["UserEmail"] = claim.Value;
                    }

                    //Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
                }
            }
        }

为了获取电子邮件地址,这就是我需要获取它的方式。纠结,是的。但这需要一个多星期的时间才能得到它,所以我很自豪至少这部分有效:)

我知道我需要if下面的代码,我只是不确定查询是什么。提前致谢!

4

1 回答 1

1

我将其添加为答案,因为我只是羞于发表评论所需的声誉。这是一个评论而不是一个答案,对此我深表歉意。

您不清楚检查的“数据库”。您是否要查询 Google 以查看他们的电子邮件地址是否有效?或者只是查看 Session["UserEmail"] 中包含的电子邮件地址是否是 gmail 地址(即“@gmail.com”地址?

顺便说一句,对于...每个你在那里的每个人都会在每次迭代时覆盖 Session["UserEmail"] 所以实际上你总是会得到集合中的最后一个值,即使它是空的(或 null?)。您可以通过中断来短路任何进一步的迭代;声明,但请考虑一下您在这里做什么以及在什么情况下要重定向它们。您的前进方式将是:“如果委托人的最后一项索赔没有 Google 地址,请将他们重定向到 Google”。我怀疑那是你真正想要做的。

最后,我不确定你的用户是谁,但总的来说,坚持用户收到来自特定提供商、特定浏览器、特定屏幕分辨率等的电子邮件完全令人讨厌的。如果这是针对公众的,放弃 gmail 要求(尽管我个人使用并喜欢 gmail)。

于 2013-09-26T22:03:12.210 回答