Symfony 2.6弃用了security.context并将其拆分为token_storage和authorization_checker服务。
升级文档中提供的示例可以很好地解释如何升级使用security.context服务的控制器,但很少说明如何在身份验证系统中执行操作。
具体来说,在2.6之前,security.context服务有一个getToken和setToken函数,它有一个可选的token参数。新的token_storage服务具有getToken和setToken函数,但它们需要tokenid和token。用于执行自定义身份验证的详细示例文档(请参阅2.7 Custom Authentication Docs)仍然显示只将令牌传递给setToken,尽管它已更新为使用token_storage服务显示。
是否有人从< = 2.5升级到> = 2.6成功实现了自定义身份验证,如果是这样,你能说出我应该在何处/如何获取必要的tokenId以传递给setToken和getToken方法?
AbstractAuthListener中的2.6之前的示例代码 - >句柄函数:
$previousToken = $this->securityContext->getToken();
$authToken = $this->authenticationManager->authenticate($token);
$this->securityContext->setToken($authToken);
...// various other code
catch(\Exception $ex){$this->securityContext->setToken() //clearing security context due to exception during authentication.
post 2.6 getToken显示$ tokenId的必需参数,setToken需要$ tokenId和$ token