database-less用户提供者
编辑该页面database-less用户提供者
从jwt.io:
独立:载荷包含所有所需的关于用户的信息,避免了不止一次需要查询数据库。https://jwt.io/introduction
JWT是自包含的,这意味着我们可以信任的有效载荷处理身份验证。简而言之,应该不需要从数据库中加载用户验证JWT令牌时,数据库应提供令牌只打一次。
这就是为什么我们决定提供一个用户提供者能够创建用户实例从JWT负载。
配置用户提供者
工作,供应商只需要几行配置:
1 2 3 4 5
#配置/包/ security.yaml安全:提供者:jwt:lexik_jwt:~
然后,使用它在你JWT保护防火墙:
ob娱乐下载Symfony 5.3版本之前
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:防火墙:api:供应商:jwt警卫:#……
ob娱乐下载Symfony 5.3和更高版本
1 2 3 4 5 6
#配置/包/ security.yaml安全:防火墙:api:供应商:jwtjwt:~
它改变什么?
现在配置提供者,它会自动使用JWTAuthenticator
当身份验证令牌。加载用户的“数据存储”(即内存或任何数据库引擎),JWTUserInterface
实例将创建JWT载荷,将缓存的请求和认证。我们提供一个简单的JWTUser
实现了这个接口的类,使用默认配置提供者。
我可以用我自己的用户类吗?
当然,你可以。你只需要让你的用户类实现JWTUserInterface
接口。这个接口只包含一个createFromPayload ()
命名的构造函数将用户的用户名和智威汤逊令牌有效载荷作为参数,并返回类的实例。
样例实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
名称空间应用程序\安全;最后类用户实现了JWTUserInterface{/ /自己的逻辑公共函数__construct(美元用户名数组,美元角色,美元电子邮件){美元这- >用户名=美元用户名;美元这- >角色=美元角色;美元这- >电子邮件=美元电子邮件;}公共静态函数createFromPayload(美元用户名数组,美元有效载荷){返回新自我(美元用户名,美元有效载荷(“角色”),/ /添加默认情况下美元有效载荷(“电子邮件”]/ /自定义);}}
请注意
您可以扩展默认值JWTUser
类如果符合您的需求。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。