Как обрабатывать страницы с устаревшими токенами аутентификации CSRF в Rails

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

Это приводит к тому, что токены аутентификации CSRF на всех других вкладках становятся недействительными. Если они попытаются отправить какую-либо форму или сделать какой-либо запрос ajax на этих вкладках без обновления, они получат сообщение об ошибке (и фактически выйдут из системы, потому что это поведение Rails по умолчанию, когда передается неверный токен аутентификации ).

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

Чего я не хочу делать, так это просто перенаправлять их на страницу входа, потому что тогда они могут потерять свою работу, например, если они написали длинный пост в блоге или что-то в этом роде.

Решение, которое приходит на ум, состоит в том, чтобы иметь некоторый javascript, который либо опрашивает сервер, чтобы проверить, изменился ли токен аутентификации, либо опрашивает файлы cookie пользователя, чтобы проверить, изменился ли сеанс. Я никогда не слышал, чтобы кто-то делал что-либо из этого, поэтому я хотел узнать, что думает сообщество.

6
задан Jacob 4 May 2012 в 18:44
поделиться