扩展认证者
编辑本页扩展认证者
的JWTTokenAuthenticator
(ob娱乐下载Symfony < 5.3)或JWTAuthenticator
(ob娱乐下载Symfony >= 5.3)类负责验证JWT令牌。它通过lexik_jwt_authentication.security.guard.jwt_token_authenticator
(ob娱乐下载Symfony < 5.3)或lexik_jwt_authentication.security.jwt_authenticator
(ob娱乐下载Symfony >= 5.3)抽象服务,可以以最灵活但仍然结构化的方式进行定制:通过扩展服务创建自己的身份验证器,这样您就可以在同一个应用程序中管理各种安全上下文。
创建自己的验证器
对于5.ob娱乐下载3之前的Symfony版本
1 2 3 4 5 6 7 8
名称空间应用程序\安全\警卫;使用Lexik\包\JWTAuthenticationBundle\安全\警卫\JWTTokenAuthenticator作为BaseAuthenticator;类JWTTokenAuthenticator扩展BaseAuthenticator{//你自己的逻辑}
1 2 3 4 5
#配置/ services.yaml服务:app.jwt_token_authenticator:类:App \安全\ \ JWTTokenAuthenticator家长:lexik_jwt_authentication.security.guard.jwt_token_authenticator
1 2 3 4 5 6 7 8 9 10 11
#配置/包/ security.yaml安全:#……防火墙:#……api:模式:^ / api无状态:真正的警卫:身份验证器:-app.jwt_token_authenticator
用于Syob娱乐下载mfony 5.3及更高版本
1 2 3 4 5 6 7 8
名称空间应用程序\安全;使用Lexik\包\JWTAuthenticationBundle\安全\身份验证\JWTAuthenticator;类CustomAuthenticator扩展JWTAuthenticator{//你自己的逻辑}
1 2 3 4 5
#配置/ services.yaml服务:app.custom_authenticator:类:App \安全\ CustomAuthenticator家长:lexik_jwt_authentication.security.jwt_authenticator
1 2 3 4 5 6 7 8 9 10
#配置/包/ security.yaml安全:#……防火墙:#……api:模式:^ / api无状态:真正的jwt:身份验证:app.custom_authenticator
请注意
本节的代码示例需要完成此步骤,它可能不会重复。
每个验证器使用不同的令牌提取器
令牌提取器设置在此包的主配置中(请参阅配置引用).如果您的应用程序包含多个具有不同安全上下文的防火墙,您可能希望配置不同的令牌提取器,分别用于每个防火墙。这可以通过拥有和防火墙一样多的身份验证器来实现(要创建身份验证器,请参见本课题的第一部分).
可以覆盖getTokenExtractor ()
在自定义验证器中:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/ * * *@returnTokenExtractor \ TokenExtractorInterface * /受保护的函数getTokenExtractor(){//返回一个自定义提取器,不管配置了什么返回新TokenExtractor \ AuthorizationHeaderTokenExtractor (“令牌”,“授权”);//或检索链令牌提取器来映射/取消此验证器的映射提取器$chainExtractor=父::getTokenExtractor ();//从所有配置的提取器中清除令牌提取器映射$chainExtractor->clearMap ();//或者只删除一个特定的提取器$chainTokenExtractor->removeExtractor (函数(TokenExtractor \ TokenExtractorInterface$器){返回$器运算符TokenExtractor \ CookieTokenExtractor;});//添加一个新的查询参数提取器到已配置的$chainExtractor->addExtractor (新TokenExtractor \ QueryParameterTokenExtractor (智威汤逊的));//返回带有新映射的链标记提取器返回$chainTokenExtractor;}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。