Redirect 如何重定向已记住的用户?
我正在用symfony2.2开发一个网站。我使用FOSUserBundle,我的网站基本上由主页、登录页面、注册页面和安全区域组成 我想做的是,当用户在我的网站地址中键入:Redirect 如何重定向已记住的用户?,redirect,symfony,login,remember-me,Redirect,Symfony,Login,Remember Me,我正在用symfony2.2开发一个网站。我使用FOSUserBundle,我的网站基本上由主页、登录页面、注册页面和安全区域组成 我想做的是,当用户在我的网站地址中键入: 如果匿名->转到主页 如果记住->进入安全区域 我试过两种不同的方法,但都不管用 1)如果我将我的url/放在安全区域,我将正确重定向到登录路径。但在security.yml中选择登录路径时,我遇到了一个问题: 如果我放置了/login,匿名将重定向到登录,而不是主页 如果我放入/homepage,匿名者将被重定向到h
- 如果匿名->转到主页
- 如果记住->进入安全区域
- 如果我放置了/login,匿名将重定向到登录,而不是主页
- 如果我放入/homepage,匿名者将被重定向到homepage,但如果在登录表单中输入错误凭据,他们将被重定向到homepage,而不是在/login中看到错误消息
public function indexAction()
{
$securityContext = $this->container->get('security.context');
$user = $securityContext->getToken()->getUser();
if (is_object($user) && $user instanceof UserInterface ) {
return $this->redirect($this->generateUrl('tk_user_homepage'));
}else if( $securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED') ){
return $this->redirect($this->generateUrl('tk_user_homepage'));
}else{
return $this->render('TkWelcomeBundle:Default:index.html.twig');
}
}
当我回到我的网站,我得到$user作为一个非对象,第二个声明是假的。但是,我可以使用url访问安全区域
正确的方法是什么(1或2)以及我在每种情况下遗漏了什么
编辑
实际上我做了这个测试:
从主页到安全区域来回移动,测试用户是否被授予:
“角色用户”、“正在进行身份验证”、“正在进行身份验证”和“已完全验证”
在安全区域,我得到了我期望的(1,0,1,1),但当我进入主页时,它是(0,0,0),我可以返回安全区域并检索(1,0,1,1)
所以我想我的主页上没有安全上下文。有人对此有什么暗示吗
提前谢谢大家,,
朱尔斯以下是似乎有效的方法: 我需要有防火墙下的网址,提供给用户访问用户。所以我把我所有的网站放在匿名授权的安全区域,玩访问控制:让匿名者访问主页/登录/注册,然后我只允许记住的用户访问整个网站 这是我的保安
firewalls:
secured_area:
pattern: ^/
anonymous: ~
form_login:
login_path: /login
check_path: /login_check
default_target_path: tk_user_homepage
provider: fos_userbundle
remember_me: true
csrf_provider: form.csrf_provider
remember_me:
key: %secret%
logout:
path: fos_user_security_logout
target: fos_user_security_login
access_control:
- { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: IS_AUTHENTICATED_REMEMBERED }
- { path: ^/admin/, role: ROLE_ADMIN }
我希望这会对一些人有所帮助
朱尔斯