Выход из сеанса

Есть веб-приложение, которое создано на asp.net. Это приложение отлично работает, когда я запускаю это на моем локальном компьютере. Я использовал сеанс для хранения userId пользователя в сеансе. На каждой странице, где я хочу, чтобы только вошедший в систему пользователь мог войти, я написал такой код:

   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["userID"] == null)
            {
                Response.Redirect("login.aspx");
            }
        }

    }

Таким образом, когда сессия не имеет userID, пользователь автоматически перенаправляется на страницу входа.

Я сталкиваюсь с двумя проблемами 1. При развертывании на общем сервере BigRock. Пользователь автоматически выходит из системы через 5 минут. На этом сервере установлено время ожидания сеанса, которое я не могу изменить. Я не хочу, чтобы мой пользователь автоматически выходил из системы.

2. Платежный шлюз также интегрирован с этим веб-сайтом, и когда пользователь нажимает кнопку "Оформить заказ". Он перенаправляется на платежный шлюз, но после ввода реквизитов платежа и завершения транзакции, когда он возвращается на страницу ответа, он снова автоматически выходит из системы, 5 минут прошло или нет. Это также хорошо работает, когда я проверяю это на состояние, когда я запускаю этот веб-сайт на моем локальном компьютере.

Любая помощь приветствуется. Большое спасибо за продвинутую работу!

Пожалуйста, дайте мне знать, если вам нужно больше разъяснений или исходного кода.

1 ответ

Что ж, вы всегда можете попробовать войти в систему, используя идентификатор заказа, полученный от PG. Поскольку ответ от PG обычно защищен контрольной суммой, вы можете положиться на его подлинность, чтобы перенести пользователя на вашу страницу. Просто обновите сеанс входа в систему, используя FormsAuthentication.SetAuthCookie способ повторно войти в систему пользователя.

В вашем случае, поскольку вы непосредственно назначаете userdId для Session (IMHO, это не лучший способ управления входами в систему. Попробуйте поискать MembershipProvider), шаги довольно просты.

  1. Получите OrderId из ответа PG.
  2. Извлечь связанный идентификатор пользователя из таблицы "Заказы" (для этого вы должны связать каждого пользователя с его заказами.
  3. Сохраните идентификатор пользователя в сеансе.
  4. Перенаправить пользователя на защищенную страницу.

Почему мы не просим пароль? Потому что ответы от PG обычно защищены с помощью хеширования и обычно невосприимчивы к фальсификации. Таким образом, вы можете смело делать ставку на подлинность пользователя, перенаправленного PG.

Другие вопросы по тегам