2017-10-16 1 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 요청은 세션 쿠키를 보내지 않습니다. 보안 문제를 원하지 않으면 인증을 재발 명하지 마십시오. – CodeCaster

+0

@CodeCaster : 세션 쿠키가 자동으로 ajax 요청으로 전송됩니다. 그렇습니까? –

+0

HttpOnly 쿠키가 아닌 경우. 모든 관례대로이 문제에 관해서는 아무 것도 말할 수 없습니다. – CodeCaster

답변

0

업데이트 : 브라우저로 인해이 문제가 발생한 것으로 보입니다. 브라우저의 일부 설정으로 인해 세션이 null로 설정되었을 수 있습니다 (ASP.NET 세션 ID가 브라우저에서 설정되지 않았습니다). 다른 브라우저를 사용했을 때 작동했습니다. 코드에 문제가없는 것 같습니다.

관련 문제