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