我无法注销用户。
我将自定义用户管理逻辑移植到 Symfony 4 项目中。它使用security和的食谱guard。
这是logout我的主防火墙中的配置:
logout:
path: /logout
target: /
Run Code Online (Sandbox Code Playgroud)
结果: - 用户转到 /logout - 用户被重定向到 / -is_granted("IS_AUTHENTICATED_REMEMBERED")继续true在我的模板中返回(false预期)
其他注意事项: - 防火墙条目被触发,因为如果我删除它会出现错误 - 我已经尝试添加额外的参数logout来销毁会话和 cookie,但这没有区别 - 登录工作正常
关于如何解决这个问题的任何想法?
:: 编辑 -security.yaml按要求添加::
security:
encoders:
App\Entity\User: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
app_users:
entity: { class: App\Entity\User, property: email }
app_oauth:
id: app.oauth_user_provider
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
provider: app_users
anonymous: ~
oauth:
resource_owners:
google: "/login/check-google"
default_target_path: /
login_path: /
failure_path: /login
oauth_user_provider:
service: app.oauth_user_provider
remember_me:
secret: "%env(APP_SECRET)%"
lifetime: 2592000
path: /
guard:
authenticators:
- App\Security\LoginFormAuthenticator
entry_point: App\Security\LoginFormAuthenticator
logout:
path: /logout
target: /
switch_user: ~
Run Code Online (Sandbox Code Playgroud)
添加这些命令
在 security.yaml 中
logout:
path: /logout
target: /
invalidate_session: true
Run Code Online (Sandbox Code Playgroud)
在控制器中
/**
* @Route("/logout", name="logout")
*/
public function logout()
{
}
Run Code Online (Sandbox Code Playgroud)
在注销按钮
<a class="text-muted" href="{{ path('logout') }}">logout </a>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10829 次 |
| 最近记录: |