我正在尝试在404错误页面中获取登录用户的用户名,如symfony文档所说;
{# app/Resources/TwigBundle/views/Exception/error404.html.twig #}
{% extends 'base.html.twig' %}
{% block body %}
<h1>Page not found</h1>
{# example security usage, see below #}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
IS_AUTHENTICATED_FULLY: {{ app.user.username }}
{% endif %}
{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
IS_AUTHENTICATED_REMEMBERED: {{ app.user.username }}
{% endif %}
{% if app.user %}
app.user: {{ app.user.username }}
{% endif %}
<p>
The requested page couldn't be located. Checkout for any URL
misspelling or <a href="{{ path('homepage') }}">return to the homepage</a>.
</p>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
一切都在开发人员中运行,但在生产中,始终不会记录用户。如果条件失败。
在讨论中,我发现:
造成此问题的原因是在安全性之前完成了路由。如果发生404错误,则不会加载安全层,因此
那么...可以在树枝异常页面中获取登录用户吗?
更新资料
看起来这是理想的行为:https : //github.com/symfony/symfony/issues/8414#issuecomment-23661839
这种骇客可以“解决”,但确实很难看...
到目前为止,我发现的唯一解决方案是:
routing.yml (这必须是最后一条规则)
pageNotFound:
pattern: /{path}
defaults: { _controller: MyContentBundle:PageNotFound:pageNotFound, path: '' }
requirements:
path: .*
Run Code Online (Sandbox Code Playgroud)
控制器动作
public function pageNotFoundAction()
{
throw new NotFoundHttpException();
}
Run Code Online (Sandbox Code Playgroud)
我希望找到更好的解决方案
| 归档时间: |
|
| 查看次数: |
1243 次 |
| 最近记录: |