如何创建并启用自定义用户跳棋
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.8,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
如何创建并启用自定义用户跳棋
在身份验证的用户,可能需要额外的检查来验证,如果确定是允许用户登录。通过定义一个自定义用户检查器,您可以定义每个防火墙应该使用哪个检查程序。
2.8
可以配置一个自定义用户检查器/防火墙是在Symfony 2.8中引入的。欧宝娱乐app下载地址
创建一个自定义用户检查
用户检查是必须实现的类UserCheckerInterface。这个接口定义了两个方法checkPreAuth ()
和checkPostAuth ()
执行检查之前和之后的用户身份验证。如果一个或多个条件不满足,应该抛出一个异常,扩展了AccountStatusException。
1 2 3 4 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
名称空间AppBundle\安全;使用AppBundle\异常\AccountDeletedException;使用AppBundle\安全\用户作为AppUser;使用欧宝娱乐app下载地址\组件\安全\核心\异常\AccountExpiredException;使用欧宝娱乐app下载地址\组件\安全\核心\用户\UserCheckerInterface;使用欧宝娱乐app下载地址\组件\安全\核心\用户\用户界面;类UserChecker实现了UserCheckerInterface{公共函数checkPreAuth(用户界面美元用户){如果(!美元用户运算符AppUser) {返回;}/ /删除用户,显示一个通用的帐户没有找到信息。如果(美元用户- >isDeleted ()) {扔新AccountDeletedException (“……”);}}公共函数checkPostAuth(用户界面美元用户){如果(!美元用户运算符AppUser) {返回;}/ /用户账户过期了,用户可能会通知如果(美元用户- >isExpired ()) {扔新AccountExpiredException (“……”);}}}
启用自定义用户检查
剩下的要做的是创建一个服务定义和配置防火墙的配置。配置服务完成像其他服务:
- YAML
- XML
- PHP
1 2 3 4
# app / config / services.yml服务:app.user_checker:类:AppBundle \安全\ UserChecker
1 2 3 4 5 6 7 8 9 10
< !——app / config /服务。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><服务><服务id=“app.user_checker”类=“AppBundle \安全\ UserChecker”/ >< /服务>< /容器>
1 2 3 4
/ / app / config / services.php使用AppBundle\安全\UserChecker;美元容器- >注册(“app.user_checker”,UserChecker::类);
剩下的要做的就是检查添加到所需的防火墙,用户的价值是服务id检查程序:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9
# app / config / security.yml#……安全:防火墙:secured_area:模式:^ /user_checker:app.user_checker#……
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
< !——app / config /安全。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><srv:容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/security”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:深水救生艇=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><配置>< !——……- - ><防火墙的名字=“secured_area”模式=“^ /”><user-checker>app.user_checker< /user-checker>< !——……- - >< /防火墙>< /配置>< /srv:容器>
1 2 3 4 5 6 7 8 9 10 11 12
/ / app / config / security.php/ /……美元容器- >loadFromExtension (“安全”,数组(“防火墙”= >数组(“secured_area”= >数组(“模式”= >' ^ /,“user_checker”= >“app.user_checker”,/ /……))));
额外的配置
可以有一个不同的用户检查/防火墙。
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12
# app / config / security.yml#……安全:防火墙:管理:模式:^ /管理user_checker:app.admin_user_checker#……secured_area:模式:^ /user_checker:app.user_checker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
< !——app / config /安全。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><srv:容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/security”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:深水救生艇=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><配置>< !——……- - ><防火墙的名字=“admin”模式=“^ /管理”><user-checker>app.admin_user_checker< /user-checker>< !——……- - >< /防火墙><防火墙的名字=“secured_area”模式=“^ /”><user-checker>app.user_checker< /user-checker>< !——……- - >< /防火墙>< /配置>< /srv:容器>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / app / config / security.php/ /……美元容器- >loadFromExtension (“安全”,数组(“防火墙”= >数组(“管理”= >数组(“模式”= >“^ /管理”,“user_checkers”= >“app.admin_user_checker”/ /……),“secured_area”= >数组(“模式”= >' ^ /,“user_checker”= >“app.user_checker”,/ /……))));
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。