通过Ajax验证用户:User.Identity.IsAuthenticated in ajax方法,但其他地方有错误

时间:2012-06-20 13:25:35

标签: asp.net-mvc forms-authentication

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

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

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

修改 经过进一步的故障排除后,我发现调用getUserInfo()的ActionResult已经填充了User对象。所以我不确定为什么getUserInfo()有一个null User。我想我当时可以传递这个对象,但我仍然只是好奇为什么会这样。

    [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;
}

0 个答案:

没有答案