在Symfony2中,是否可以检查用户是否经过身份验证以访问他请求的URl.我想要做的是,我不想让登录用户返回注册或登录或恢复密码页面.
这是我的security.yml:
access_control:
- { path: ^/signup/, roles: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICATED_FULLY}
- { path: ^/register/, roles: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICATED_FULLY}
- { path: ^/recover/, roles: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICATED_FULLY}
Run Code Online (Sandbox Code Playgroud)
但这显示,访问被拒绝的页面给当前用户.所以我认为如果我可以通过检查他是否被允许将用户重定向到主页是很好的.我可以通过提供用户在监听器中进行身份验证的路径来检查吗?
public function onKernelResponse(FilterResponseEvent $event)
{
$request = $event->getRequest();
$path = $request->getPathInfo();
if($this->container->get('security.context')->getToken() != null) {
// To check if user is authenticated or anonymous
if( ($this->container->get('security.context')->getToken() instanceof UsernamePasswordToken) &&
($this->container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY') == true) ) {
// HOW TO CHECK PATH ?
// set response to redirect to home page
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个命令来从文件生成帐户.在命令中,我已经通过了一些论点.
$this
->setName('batch:create')
->setDescription('xyz')
->setHelp('xyz')
->addArgument('account-id', InputArgument::REQUIRED, "Set the account id.")
->addArgument('name', InputArgument::REQUIRED, "Set the account name.");
Run Code Online (Sandbox Code Playgroud)
我只是在考虑是否有任何方法可以检查传递的参数类型.现在我正在检查它,
if (is_numeric($input->getArgument('account-id'))) {
// ....
}
Run Code Online (Sandbox Code Playgroud)
无论如何我可以创建一个检查类型的验证器,我只需要调用验证功能.
if ($input->validate() === false) {
// show error message and return.
}
Run Code Online (Sandbox Code Playgroud) 这个问题以前可能有人问过。我已经搜索了答案,但我还没有找到我想要的。
在 Symfony 2.3 中,有没有办法针对特定请求禁用记录器?我的意思是,我正在为我的项目使用 SOAP 服务。当我发送登录请求时,用户名和密码作为纯文本直接转储到日志文件中。有没有办法停止记录此类特定请求?
例如,当我发送登录请求时,记录器应该被禁用,但对于所有其他请求,它会再次工作。这可能吗?