gpt4 book ai didi

Symfony2 - 仅匿名用户而非用户访问登录和注册页面

转载 作者:行者123 更新时间:2023-12-04 03:30:01 25 4
gpt4 key购买 nike

我有一个带有登录表单的网站,成功登录后,我被重定向到 index.html 。但是当我点击后退按钮时,它仍然让我看到不好的登录表单。我希望只有匿名查看者才能访问登录表单,而不是已经登录的用户。在 symfony2 中是否有一种简单的方法可以做到这一点?谢谢

这是我的安全。:


jms_security_extra:
secure_all_services: false
expressions: true

security:
encoders:
Mata\UserBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 1

role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]


providers:
user_db:
entity: { class: MataUserBundle:User, property: username }

firewalls:

secured_area:
pattern: ^/
anonymous: ~
form_login:
check_path: /login_check
login_path: /login
logout:
path: /logout
target: /

access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }

最佳答案

这可能不是最好或正确的方法,但它是我能弄清楚的唯一方法。

在我的 loginAction 方法中,我这样做了(参见 $secured 变量)。如果用户 session 已通过身份验证,那么我会将它们重定向到主页/索引页面。我不知道有什么方法可以通过防火墙配置来做到这一点,因为我不相信登录页面会附加防火墙。

/**
* @Route("/login", name="login")
* @Template()
*/
public function loginAction()
{
$request = $this->getRequest();
$session = $request->getSession();

// if the session is secured (user is logged in)
// then $secured will be an object with various user information.
$secured = unserialize($session->get('_security_secured'));
if ($secured) {
return $this->redirect($this->generateUrl('home'));
}

// get the login error if there is one
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
}

return array(
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
'embed' => $request->isXmlHttpRequest()
);
}

关于Symfony2 - 仅匿名用户而非用户访问登录和注册页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13667091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com