如何让 SF2/FOSUserBundle 在特定操作时再次要求用户输入密码?
How to make SF2/FOSUserBundle ask user for password again upon specific actions?
我在 /admin/
下有这个安全管理区域。用户需要通过 HTTP basic auth
登录(http_basic
在 security.yml)
中设置为 true
。
我的目标是,对于特定控制器中的特定操作,重新询问用户他的 username/password。我认为这很简单,但根据我的研究,事实并非如此。
我试过 unset
$_SERVER['PHP_AUTH_USER']
和 $_SERVER['PHP_AUTH_PW']
但似乎没有效果。我还尝试更改 header
以设置 401
状态代码,但这也没有效果。
如何实现?
首先,HTTP Basic Authentication 的设计并不支持注销。
这意味着您可以不保证它在每个浏览器上都适用;即使使用 401 技巧或重定向 user@mysite.com 来使凭据无效。
见this answer。
所以当你需要注销你的用户时使用它是一个坏习惯。
如果您想重新询问用户的凭据,您应该使用 FOSUserBundle 提供的自定义身份验证。而且它非常简单和安全。
我在 /admin/
下有这个安全管理区域。用户需要通过 HTTP basic auth
登录(http_basic
在 security.yml)
中设置为 true
。
我的目标是,对于特定控制器中的特定操作,重新询问用户他的 username/password。我认为这很简单,但根据我的研究,事实并非如此。
我试过 unset
$_SERVER['PHP_AUTH_USER']
和 $_SERVER['PHP_AUTH_PW']
但似乎没有效果。我还尝试更改 header
以设置 401
状态代码,但这也没有效果。
如何实现?
首先,HTTP Basic Authentication 的设计并不支持注销。
这意味着您可以不保证它在每个浏览器上都适用;即使使用 401 技巧或重定向 user@mysite.com 来使凭据无效。
见this answer。
所以当你需要注销你的用户时使用它是一个坏习惯。
如果您想重新询问用户的凭据,您应该使用 FOSUserBundle 提供的自定义身份验证。而且它非常简单和安全。