0
私のアプリケーションには次のコードがあります。 Constants.SESSION_USERは文字列値です。私は私が以前AccountController
mvcで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.UserAccount
はnull
です。
時にはこれがうまく動作しないことがあるので、私は少し混乱します。ここで何が問題なの?
あなたのAJAXリクエストは、セッションCookieを送信しません。セキュリティ上の問題が発生しないようにするには、認証を再作成しないでください。 – CodeCaster
@CodeCaster:セッションクッキーは自動的にajaxリクエストで送信されますが、そうではありませんか? –
HttpOnlyのCookieではない場合。私たちは本当にこのことについて何も言いません。 – CodeCaster