2

Facebook を使用してユーザーを事前認証しているため、ユーザーがページにアクセスすると、ajax 関数が呼び出されてユーザーがログインし、サーバーはユーザーがサイトに対して既に認証されているかどうかも確認します。これらのユーザーは、サーバー上のユーザー データベースにエントリを持っています。

サーバー側のコードは次のとおりで、ajax によって呼び出されます。その後、データベースに保存されているユーザーに関する詳細情報を取得するために使用する 2 番目の方法です。

同じコントローラーの 2 番目のメソッドで User.Identity.IsAuthticaed を呼び出すと、ユーザー オブジェクトはまだ null です。User オブジェクトには、以下の FBReg のすべての情報が含まれています。

編集: さらにトラブルシューティングを行った後、 getUserInfo() を呼び出す ActionResult に User オブジェクトが設定されていることがわかりました。したがって、getUserInfo() のユーザーが null である理由がわかりません。その場合、オブジェクトを渡すだけでよいと思いますが、なぜこれが起こるのかまだ興味があります。

    [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