0

Моего приложения MVC использует FormsAuthentication для входа.как SignOut от аутентификации формы после окончания сеанса

[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"); 

      } 
     } 

И это имеет время сеанса из 1 минуты (в web.config) и один раз во время сеанса из , я очищаю сеансы в событии session_end в Global.asax.

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. Я попробовал это в Session_End случае в Global.asax:

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

но его дает «ссылка на объект не указывает на экземпляр объекта.» исключение.

ответ

0

Возможно, мне что-то не хватает, но это звучит как проблема авторизации, а не проблема сеанса.

Является ли ваше действие UserList защищенным в некотором роде?

[Authorize] 
public ActionResult UserList() 
{ 
    return View(); 
} 

http://msdn.microsoft.com/en-us/library/ff398049(v=vs.100).aspx