Выход из сеанса
Есть веб-приложение, которое создано на 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
), шаги довольно просты.
- Получите OrderId из ответа PG.
- Извлечь связанный идентификатор пользователя из таблицы "Заказы" (для этого вы должны связать каждого пользователя с его заказами.
- Сохраните идентификатор пользователя в сеансе.
- Перенаправить пользователя на защищенную страницу.
Почему мы не просим пароль? Потому что ответы от PG обычно защищены с помощью хеширования и обычно невосприимчивы к фальсификации. Таким образом, вы можете смело делать ставку на подлинность пользователя, перенаправленного PG.