Может ли кто-нибудь объяснить, как вручную создать файл cookie «Запомнить меня» в контроллере?
Я хочу, чтобы пользователи оставались в системе после того, как они нажали «зарегистрироваться», без необходимости последующего входа в систему с использованием своих учетных данных.
Я пытался создать файл cookie вручную, но я предполагаю, что
значение файла cookie неверно, и поэтому функция «запомнить меня»
не работает.
Устанавливается файл cookie с правильным именем. Я это проверил.
Функция «Запомнить меня» работает должным образом при использовании обычной
процедуры входа в систему с учетными данными пользователя.
security.yml
security.yml запомнить меня
security:
firewalls:
main:
remember_me:
lifetime: 86400
domain: ~
path: /
key: myKey
Это то, что у меня есть сейчас, хотя файл cookie установлен, он не работает.
$um = $this->get('fos_user.user_manager');
$member = $um->createUser();
… Form stuff with bindRequest etc.
$um->updatePassword($member);
$um->updateUser($member);
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$token = new RememberMeToken($member, $providerKey, $securityKey,
$member->getRoles());
$this->container->get('security.context')->setToken($token);
$redirectResponse = new RedirectResponse($url);
$redirectResponse->headers->setCookie(
new \Symfony\Component\HttpFoundation\Cookie(
'REMEMBERME',
base64_encode(implode(':', array($member->getUsername(),
$member->getPassword()))),
time() + 60*60*24
)
);
return $redirectResponse;
Обновление:
Я также пробовал работать с
Класс PersistentTokenBasedRememberMeServices с отражением, но он не работает. файл cookie устанавливается, но не работает
$token = $this->container->get('security.context')->getToken();
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$persistenService = new
PersistentTokenBasedRememberMeServices(array($um), $providerKey,
$securityKey, array('path' => '/', 'name' => 'REMEMBERME', 'domain' =>
null, 'secure' => false, 'httponly' => true,
'lifetime' => 86400));
$persistenService->setTokenProvider(new InMemoryTokenProvider());
$method = new \ReflectionMethod('Symfony\Component\Security\Http\RememberMe\PersistentTokenBasedRememberMeServices',
'onLoginSuccess');
$method->setAccessible(true);
$method->invoke($persistenService, $request, $redirectResponse, $token);
Я использую Symfony v2.0.5 и FOSUserBundle 1.0
ОБНОВЛЕНИЕ 2:
Я попробовал третий способ. То же, что и выше, но без отражения:
$token = $this->container->get('security.context')->getToken();
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$persistenService = new PersistentTokenBasedRememberMeServices(array($um), $providerKey, $securityKey, array('path' => '/', 'name' => 'REMEMBERME', 'domain' => null, 'secure' => false, 'httponly' => true, 'lifetime' => 31536000, 'always_remember_me' => true, 'remember_me_parameter' => '_remember_me'));
$persistenService->setTokenProvider(new InMemoryTokenProvider());
$persistenService->loginSuccess($request, $redirectResponse, $token);
Подробнее здесь: https://stackoverflow.com/questions/896 ... userbundle
Создайте файл cookie «Запомнить меня» для Symfony2 вручную (FOSUserBundle) ⇐ Php
Кемеровские программисты php общаются здесь
1719955967
Anonymous
Может ли кто-нибудь объяснить, как вручную создать файл cookie «Запомнить меня» в контроллере?
Я хочу, чтобы пользователи оставались в системе после того, как они нажали «зарегистрироваться», без необходимости последующего входа в систему с использованием своих учетных данных.
Я пытался создать файл cookie вручную, но я предполагаю, что
значение файла cookie неверно, и поэтому функция «запомнить меня»
не работает.
Устанавливается файл cookie с правильным именем. Я это проверил.
Функция «Запомнить меня» работает должным образом при использовании обычной
процедуры входа в систему с учетными данными пользователя.
security.yml
security.yml запомнить меня
security:
firewalls:
main:
remember_me:
lifetime: 86400
domain: ~
path: /
key: myKey
Это то, что у меня есть сейчас, хотя файл cookie установлен, он не работает.
$um = $this->get('fos_user.user_manager');
$member = $um->createUser();
… Form stuff with bindRequest etc.
$um->updatePassword($member);
$um->updateUser($member);
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$token = new RememberMeToken($member, $providerKey, $securityKey,
$member->getRoles());
$this->container->get('security.context')->setToken($token);
$redirectResponse = new RedirectResponse($url);
$redirectResponse->headers->setCookie(
new \Symfony\Component\HttpFoundation\Cookie(
'REMEMBERME',
base64_encode(implode(':', array($member->getUsername(),
$member->getPassword()))),
time() + 60*60*24
)
);
return $redirectResponse;
[b]Обновление:[/b]
Я также пробовал работать с
Класс PersistentTokenBasedRememberMeServices с отражением, но он не работает. файл cookie устанавливается, но не работает
$token = $this->container->get('security.context')->getToken();
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$persistenService = new
PersistentTokenBasedRememberMeServices(array($um), $providerKey,
$securityKey, array('path' => '/', 'name' => 'REMEMBERME', 'domain' =>
null, 'secure' => false, 'httponly' => true,
'lifetime' => 86400));
$persistenService->setTokenProvider(new InMemoryTokenProvider());
$method = new \ReflectionMethod('Symfony\Component\Security\Http\RememberMe\PersistentTokenBasedRememberMeServices',
'onLoginSuccess');
$method->setAccessible(true);
$method->invoke($persistenService, $request, $redirectResponse, $token);
Я использую Symfony v2.0.5 и FOSUserBundle 1.0
ОБНОВЛЕНИЕ 2:
Я попробовал третий способ. То же, что и выше, но без отражения:
$token = $this->container->get('security.context')->getToken();
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$persistenService = new PersistentTokenBasedRememberMeServices(array($um), $providerKey, $securityKey, array('path' => '/', 'name' => 'REMEMBERME', 'domain' => null, 'secure' => false, 'httponly' => true, 'lifetime' => 31536000, 'always_remember_me' => true, 'remember_me_parameter' => '_remember_me'));
$persistenService->setTokenProvider(new InMemoryTokenProvider());
$persistenService->loginSuccess($request, $redirectResponse, $token);
Подробнее здесь: [url]https://stackoverflow.com/questions/8963470/create-a-symfony2-remember-me-cookie-manually-fosuserbundle[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия