Есть пара вещей, которые соответствуют приведенному выше коду
1 . if(document.cookie == '')
Вышеприведенное утверждение не всегда предполагает, что возвращает true , даже когда вы открываете свое web_app с главного экрана iOS для в первый раз , т.е. document.cookie содержит некоторое значение (хотя и нежелательное, но все же) даже открытие с главного экрана (по крайней мере, что я нашел). Я призываю вас подсказать то же самое с предупреждением
Что-то вроде alert(document.cookie)
, прежде чем натолкнуться на упомянутое выше if clause
Если да (document.cookie does contain some value
), то, я думаю, вам нужно исправить вышеупомянутое условие if что-то вроде этого
> if(!document.cookie.match(/_session_id/) ) {
> // Rest of the code goes here
> }
если вы используете ActiveRecord :: Base.session_store
или
> if (!document.cookie.match(/{{YOUR SESSION KEY}}/) {
> // Rest of the code goes here
> }
ваш ключ сеанса при использовании Cookie Store "следующий ключ можно найти, посмотрев файл config/initializer/session_store.rb
2 . Как обратите внимание на код ниже
localStorage.setItem('__cookie__', ''+document.cookie)
имеет смысл при чтении, хотя оно и есть поворот к нему
за исключением document.cookie, который будет содержать cookie для приложения .
и сохраняется браузером, но, как я заметил, document.cookie не оказывается таким же
например, браузер сохранил следующий файл cookie для моего приложения
* * Тысяча сорок-одина "__ cookieset = 1; KBD = 0EN-3; _session_id = 896c455928f3dd9e7bb0b660efb7063c" * * тысяча сорок два
но при проверке document.cookie я обнаружил, что он содержит
"__cookieset=1;KBD=0en-3;"
Обратите внимание, что document.cookie не содержит "_session_id=896c455928f3dd9e7bb0b660efb7063c"
Что необходимо, поскольку он используется различными гемами авторизации (devise или authlogic) , чтобы определить, имеет ли текущий пользователь допустимый сеанс?
поэтому я прошу вас сохранить cookie из объекта запроса, полученного из Rack::Request.new(env)
в локальное хранилище
3 . размещение промежуточного программного обеспечения обеспечивает правильное размещение промежуточного программного обеспечения в нужном месте.
Если вы используете ActiveRecord :: Base.session_store, я думаю, код патча того же самого камня можно найти здесь решить вашу цель