如何创建和启用自定义用户检查
编辑本页如何创建和启用自定义用户检查
在对用户进行身份验证期间,可能需要进行额外的检查,以验证是否允许标识的用户登录。通过定义一个自定义用户检查器,您可以定义每个防火墙应该使用哪个检查器。
创建自定义用户检查器
用户检查器是必须实现的类UserCheckerInterface.这个接口定义了两个方法checkPreAuth ()
而且checkPostAuth ()
在用户认证前和认证后进行检查。类的一个或多个条件未满足,则抛出扩展AccountStatusException类。考虑使用CustomUserMessageAccountStatusException,延伸至AccountStatusException
并允许自定义显示给用户的错误消息:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
名称空间应用程序\安全;使用应用程序\实体\用户作为AppUser;使用ob娱乐下载\组件\安全\核心\异常\AccountExpiredException;使用ob娱乐下载\组件\安全\核心\异常\CustomUserMessageAccountStatusException;使用ob娱乐下载\组件\安全\核心\用户\UserCheckerInterface;使用ob娱乐下载\组件\安全\核心\用户\用户界面;类UserChecker实现了UserCheckerInterface{公共函数checkPreAuth(用户界面$用户):无效{如果(!$用户运算符AppUser) {返回;}如果($用户->isDeleted ()) {//传递给该异常的消息将显示给用户扔新CustomUserMessageAccountStatusException (“您的用户帐户已不存在。”);}}公共函数checkPostAuth(用户界面$用户):无效{如果(!$用户运算符AppUser) {返回;}//用户帐号过期,可能会通知用户如果($用户->isExpired ()) {扔新AccountExpiredException (“……”);}}}
5.1
的CustomUserMessageAccountStatusException
类在Symfony 5.1中引入。ob娱乐下载
启用自定义用户检查器
接下来,确保您的用户检查器已注册为服务。如果你在用默认的服务。yaml的配置时,服务会自动注册。
剩下要做的就是将检查器添加到所需的防火墙,其中的值是用户检查器的服务id:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9
#配置/包/ security.yaml#……安全:防火墙:主要:模式:^ /user_checker:App \安全\ UserChecker#……
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。