2017-10-16 50 views
0

私のアプリケーションには次のコードがあります。 Constants.SESSION_USERは文字列値です。私は私が以前AccountControllermvcでAjax経由でアクセスするとセッションがnullになる

[HttpPost] 
public JsonResult GetSession() 
{ 
    User loggedInAccount = null; 

    if (this.UserAccount != null) // this.UserAccount is null 
    { 
     //get the user from the session 
     loggedInAccount = this.UserAccount;   
    } 
} 

このGetSession()に設定されたユーザセッションをアクセスしていますが、次のコードではSession

public class AccountController : BaseController 
{ 
    [HttpPost] 
    public JsonResult Login(LoginViewModel loginView) 
    { 
     User loggedInAccount = null;  
     // some logic to validate the user 

     // if no validation issues 
     User loggedAccount = new User(loginView.ID); 
     //set the logged account into the session 
     this.UserAccount = loggedAccount; 
    } 
} 

にユーザーを設定する場所

public class BaseController : Controller 
{ 
    public Account UserAccount 
    { 
     get 
     { 
      if (Session[Constants.SESSION_USER] is User) 
      { 
       return Session[Constants.SESSION_USER] as User; 
      } 
      return null; 
     } 
     set 
     { 
      Session[Constants.SESSION_USER]  = value; 
     } 
    } 
} 

次の通りでありますメソッドがajaxリクエストで呼び出された場合、this.UserAccountnullです。

時にはこれがうまく動作しないことがあるので、私は少し混乱します。ここで何が問題なの?

+2

あなたのAJAXリクエストは、セッションCookieを送信しません。セキュリティ上の問題が発生しないようにするには、認証を再作成しないでください。 – CodeCaster

+0

@CodeCaster:セッションクッキーは自動的にajaxリクエストで送信されますが、そうではありませんか? –

+0

HttpOnlyのCookieではない場合。私たちは本当にこのことについて何も言いません。 – CodeCaster

答えて

0

更新:この問題は、ブラウザによって発生しているようです。ブラウザの一部の設定により、セッションがnullになっている可能性があります(ASP.NETセッションIDはブラウザに設定されていません)。私は別のブラウザを使用したときに動作しました。コードに問題はないようです。

関連する問題