我刚刚在这个论坛的帮助下添加了一个AuthenticationSuccessHandler,当用户通过fosuserbundle或fosfacebookbundle登录时,它在我的站点上实现了重定向。当用户完成或未完成配置文件时,重定向会发生变化,如果已经完成,我希望将它们重定向到以前的位置,这就是我使用referer变量的原因。
namespace Me\MyBundle\Handler; use Symfony\Component\Security\Http\HttpUtils; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationSuccessHandler; class AuthenticationSuccessHandler extends DefaultAuthenticationSuccessHandler { protected $router; public function __construct( HttpUtils $httpUtils, array $options, $router) { $this->router = $router; parent::__construct( $httpUtils, $options ); } public function onAuthenticationSuccess( Request $request, TokenInterface $token ) { $user = $token->getUser(); if($user->getProfileComplete()!=1){ //redirects to profile editing $url = 'fos_user_profile_edit'; }else{ $referer = $request->headers->get('referer'); if($referer == NULL){ //redirects to custom url if there is not any referer $url = 'My_customurl'; }else{ //redirects to the referer $url = $referer; } } return new RedirectResponse($this->router->generate($url)); } }
security.yml,我已在fos_facebook和form_login宣布use_referrer:
firewalls: main: pattern: ^/ fos_facebook: app_url: "http://apps.facebook.com/app" server_url: "http://www.app.com" login_path: /user/login check_path: /facebook/login_check provider: fos_facebook_provider success_handler: my_auth_success_handler use_referer: true form_login: provider: fos_userbundle csrf_provider: form.csrf_provider login_path: /user/login check_path: /user/login_check use_forward: false success_handler: my_auth_success_handler use_referer: true failure_path: null logout: path: /user/logout anonymous: ~ remember_me: key: mySuperKey lifetime: 4147200 path: / domain: ~
当我登录时,我没有完成我的个人资料,我成功地重定向,但当它完成时,引用者不是空的,我有500个错误:
当我使用Facebook登录时,我收到一个500错误:“无法为指定路线生成URL”http://app.com/app_dev.php/user/login“因此,该路由不存在。”firefox中的url是:http://app.com/app_dev.php/facebook/login_check"
当我用表单登录时,我得到一个500的错误:“无法为命名的路由生成网址”http://app.com/app_dev.php/user/login“因为这样的路由不存在。”火狐中的网址是这样的:“http://app.com/app_dev.php/user/login_check”
任何想法,我都快疯了。我认为这是因为推荐已经存储了用户/登录,当它转到login_check再次转到用户/登录。
您正在尝试使用实际url而不是路由名称生成路由。请尝试以下代码:
if ($user->getProfileComplete() != 1) {
$url = $this->router->generate('fos_user_profile_edit');
} else {
$referer = $request->headers->get('referer');
if ($referer == NULL) {
$url = $this->router->generate('My_customurl');
} else {
$url = $referer;
}
}
return new RedirectResponse($url);
我试图在登录symfony2应用程序后实现重定向,以便在我的用户是否有一个属性时重定向。我已在项目的Handler文件夹中创建了AuthenticationSuccessHandler.php类: 但是当我登录时,我得到一个错误: 注意:未定义的属性:Me\MyBundle\Handler\AuthenticationSuccessHandler::$router in/var/www/MyBun
Flatter Web(Navigator 2.0/Router API):如何处理经过身份验证的路由及其成功身份验证后的重定向? e、 g.我的系统中有这种路由 若用户直接打开这个URL,我想让用户先登录,那个么路由将被重定向到。。 一旦登录,我想用户导航以前打开的网址,如果有任何其他主页。。 似乎这种事情可能会有所帮助,任何想法——我们如何才能实现类似的事情?https://stackover
在从主机推送docker映像(成功登录后)时,我得到了“未经授权:需要身份验证”。 详情如下。 Docker版本:1.9.1(客户端和服务器) /var/log/messages显示403,我不知道这个docker。见下文。 非常感谢您的帮助,如果您需要更多信息,请告诉我。我也用-f推了推。不走运!
我使用Laravel 5.2。我想问一个问题。如何更改重定向登录表单在laravel当我们已经做登录?我使用的是来自Php artisan make: auth的auth。 我已经登录并重定向到localhost:8000/admin 然后我再次打开localhost:8000/登录。它将重定向到“/”或localhost:8000/ 我的问题是如何将“/”更改为“/”管理员“?因此,即使我已经登
使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。
我使用Spring Security 4.2.1来认证一个SpringMVC webapp。我有一个非常难以捉摸的问题,似乎有时工作,有时被打破(打破比它的工作)。 问题如下: > < li> 在尝试登录时,AuthenticationProvider正确地验证了用户,并且我在日志中看到了验证成功(并且经过验证的用户具有所需的所有权限,等等,我可以在日志中看到它们)。 然后,框架似乎为用户清除了S