0

세션 종료 후 폼 인증에서방법. 내 MVC 응용 프로그램에 로그인 할 수있는 FormsAuthentication를 사용

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Login(FiNext.Models.User user) 
    { 
     try 
     { 
      using (HttpClient httpClient = new HttpClient()) 
      { 
       var task = httpClient.PostAsJsonAsync<FiNext.Models.User>(String.Concat(ServiceUri.ApiUrl,"/Test/Validate"), user).Result; 

       FormsAuthentication.SetAuthCookie(user.Name, false); 
       SessionHelpers.UserId = user.Id; 
       return RedirectToAction("Create"); 

      } 
     } 

을 signout합니다 그리고 그것은 (Web.config의에서) 1 분 아웃 세션 시간을 가지고 있으며, 세션 시간에 한번 이 호출되면 Global.asax에서 session_end 이벤트의 세션을 지우고 있습니다.

protected void Session_End(object sender, EventArgs e) 
    { 
     Session.Clear(); 
     Session.Abandon(); 
    } 

지금은 페이지에 정상 로그 오프 버튼을 사용하여 로그 아웃 문제는 페이지가 로그 아웃됩니다.

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult LogOff() 
    { 
     try 
     { 
      FormsAuthentication.SignOut(); 

      return RedirectToAction("Home", "User"); 
     } 
     catch (Exception ex) 
     {     
      throw ex; 
     } 
    } 

지금은이 응용 프로그램의 URL을 명중 우리가 로그 아웃 및 홈 페이지로 리디렉션 한대로 로그인 페이지로 리디렉션됩니다 ("http://abcd.com/User/UserList"을 말한다). 이것은 원하는 기능이며 올바르게 작동합니다.

하지만 문제는 세션 시간이 초과되어 session_end 이벤트가 발생했을 때입니다. 이제는이 응용 프로그램의 URL (예 : "http://abcd.com/User/UserList")에 도달하면 iam이 데이터를 가져올 수 있습니다.

그래서 session_end가 실행될 때 양식 인증에서 로그 아웃하는 방법.

protected void Session_End(object sender, EventArgs e) 
    { 
     FormsAuthentication.SignOut(); 
     Session.Clear(); 
     Session.Abandon(); 
    } 

을하지만 준다 : 난의 Global.asax에 session_end 경우에이 시도 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 예외.

답변