我正在使用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;
}