Моего приложения 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();
}
но его дает «ссылка на объект не указывает на экземпляр объекта.» исключение.