2

我正在使用 Facebook 对用户进行预认证,因此当他们访问页面时,会调用一个 ajax 函数来登录用户,并且服务器还将检查用户是否已通过该站点的身份验证。这些用户在服务器上的用户数据库中有条目。

服务器端代码如下,由ajax调用。之后,我使用第二种方法来获取有关存储在数据库中的用户的更多信息。

当我在第二种方法中调用 User.Identity.IsAuthticaed 时,在同一个控制器中,用户对象仍然为空。User 对象包含下面 FBReg 中的所有信息。

编辑: 经过进一步的故障排除后,我发现调用 getUserInfo() 的 ActionResult 填充了 User 对象。所以我不确定为什么 getUserInfo() 有一个空用户。我想那时我可以通过对象,但我仍然很好奇为什么会发生这种情况。

    [HttpPost]
    public String FBReg(FBInfo userinfo)
    {   
        ..
        ..
        ..

     if (!User.Identity.IsAuthenticated)
     {
         if (ModelState.IsValid)
         {
             if (Membership.ValidateUser(userinfo.id, "FBPassword"))
             {
                 FormsAuthentication.SetAuthCookie(userinfo.id, true);
                 var result = (from u in db.users where (u.username == userinfo.id) select u).FirstOrDefault();
                 result.LastLoginDate = DateTime.Now;
                 db.SaveChanges();
             }
             else
             {
                 ModelState.AddModelError("", "The user name or password provided is incorrect.");
             }
         }
        ..
        ..
        ..
        return "";
  }





public UserRepository getUserInfo()
{
    bool isauth = false;
    try
    {
        if (User.Identity.IsAuthenticated)  // User is always null even after FBReg has User as Authnticated with all the correct information
        {
            isauth = User.Identity.IsAuthenticated;
        }
    }
    catch { }

        // get user info from database to display on page
        ..
        ..
        ..



    return userInfo;
}
4

0 回答 0