【发布时间】:2015-05-27 13:06:21
【问题描述】:
每当我转到 /admin/logout 时,我都会正确地重定向到我的项目的根目录,但在我访问 /admin/ 时仍然登录,因为没有提示我输入凭据。
这是我的配置:
security.yml
security:
firewalls:
admin_area:
pattern: ^/admin
http_basic: ~
stateless: true
switch_user: { role: ROLE_SUPER_ADMIN, parameter: _want_to_be_this_user }
logout: { path: /admin/logout, target: / }
AdminBundle/Resources/config/routing.yml
logout:
pattern: /logout
app/config/routing.yml
admin:
resource: "@AdminBundle/Resources/config/routing.yml"
prefix: /admin
授权仍然存在,因为标头状态为 Authorization:Basic YWRtaW46cEAkJHcwUmQh,所以我猜在请求期间仍会向应用程序提供凭据。
我知道没有像this question 那样从HTTP Basic Auth 注销的正确方法,但也许 Symfony2 允许这样做?
【问题讨论】:
-
尝试将您的注销模式更改为
/admin/logout,这样它就在防火墙下,您也可以检查您是否没有检查过remember me- 尝试删除cookie然后登录并注销 -
感谢@Vardius 的评论,但我的模式已经
/admin/logout正确重定向。另外,我还没有实现选项remember_me(还)。 -
在您的帖子中,我可以看到您的
routing.yml中的注销不在防火墙下。尝试更改它,然后在security.yml中尝试使用路由名称而不是模式logout: path: logout.... -
实际上,我的路由
routing.yml文件位于AdminBundle捆绑包下,它的路由在app/config/routing.yml中导入,就像admin: resource: "@AdminBundle/Resources/config/routing.yml" prefix: /admin一样,所以路由的模式是/admin/logout,所以在防火墙。不幸的是,更改security.yml中路径名称的模式没有任何效果(仍然登录)。感谢您的帮助。
标签: php security symfony basic-authentication logout