HttpContext.Session.Abandon () не работает в ядре MVC.Session.clear не выходит из системы моего пользователя - PullRequest
0 голосов
/ 28 февраля 2019

Я получаю сообщение об ошибке: «ISession не содержит определения для« Abandon », и доступный метод расширения« Abandon », принимающий первый аргумент типа« ISession », не найден».

У меня естьпопытался использовать session.clear, но даже после выхода из системы, если я открываю веб-сайт, пользователь вошел в систему.

Это ошибка, которую я получаю

enter image description here

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Кажется, мой сеанс хранится в файлах cookie и не очищается / не удаляется при использовании session.clear ()

, поэтому я использовал это, и похоже, что он работает как шарм.

foreach (var cookie in Request.Cookies.Keys)

        {
            if (cookie == ".AspNetCore.Session")
                Response.Cookies.Delete(cookie);
        }
0 голосов
/ 28 февраля 2019

Вот как я реализовал Session в своем проекте ASP .NET CORE:

Создайте фильтр SessionTimeout:

public class SessionTimeout : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (context.HttpContext.Session == null ||!context.HttpContext.Session.TryGetValue("UserID", out byte[] val))
        {
            context.Result =
                new RedirectToRouteResult(new RouteValueDictionary(new
                {
                    controller = "Pages",
                    action = "SessionTimeout"
                }));
        }
        base.OnActionExecuting(context);
    }
}

Зарегистрируйте этот фильтр в файле Startup.cs:

В вашем методе ConfigureServices:

services.AddSession(options =>
            {
                options.IdleTimeout = TimeSpan.FromMinutes(10);               
            });

В вашем Configure добавьте:

app.UseSession();

И, наконец, украсьте свой класс / метод с помощью фильтра как:

    [SessionTimeout]
    public class DashboardController : Controller

Чтобы уничтожить ваш сеанс на основе события выхода из вашего представления:

public IActionResult Logout()
        {
            HttpContext.Session.Clear();
            return RedirectToAction("Login", new { controller = "Pages" });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...