家一个>< /li> 欧宝体育电话 安全一个>< /li> 如何模拟一个用户吗一个>< /li> 如何模拟一个用户吗 编辑该页面一个> 警告:你浏览的文档欧宝体育电话<一个href=”//www.oldmanjams.com/releases/4.2">欧宝娱乐app下载地址Symfony 4.2一个>,不再维护。 读<一个href=”//www.oldmanjams.com/doc/current/security/impersonating_user.html">这个页面的更新版本一个>Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。 知道什么时候扮演活跃一个>< /li> 找到原始用户一个>< /li> 控制查询参数一个>< /li> 限制用户切换一个>< /li> 事件一个>< /li> 谨慎 用户模拟与一些身份验证机制(如不兼容。REMOTE_USER)针对每个请求身份验证信息将被发送。 冒充用户可以通过激活switch_user防火墙侦听器: YAML XML PHP 1 2 3 4 5 6 7 8 #配置/包/ security.yaml安全:#……防火墙:主要:#……switch_user:真正的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 < !——配置/包/安全。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”><配置>< !——……- - ><防火墙的名字=“主要”>< !——……- - ><切换用户/ >< /防火墙>< /配置>< /srv:容器> 1 2 3 4 5 6 7 8 9 10 11 / /配置/包/ security.php美元容器- >loadFromExtension (“安全”,(/ /……“防火墙”= > [“主要”= > [/ /……“switch_user”= >真正的,]]]); 切换到另一个用户,添加一个查询字符串_switch_user参数和用户名(或其他领域我们的用户提供者使用加载用户)作为当前URL的值: 1 http://example.com/somewhere?_switch_user=thomas 切换回原来的用户,使用特别的_exit用户名: 1 http://example.com/somewhere?_switch_user=_exit 此功能只提供给用户提供一个特殊的角色ROLE_ALLOWED_TO_SWITCH。使用<一个href=”//www.oldmanjams.com/doc/4.2/security.html" class="reference internal">role_hierarchy一个>是一个伟大的方式给这个角色的用户需要它。 ROLE_PREVIOUS_ADMIN。例如,在一个模板,这个角色可以用来表示退出模拟链接: 1 2 3 {%如果is_granted (ROLE_PREVIOUS_ADMIN) %}<一个href=”{{路径(“主页”,{“_switch_user”:“_exit”})}}”>退出模拟< /一个>{%endif%} SwitchUserRole对象: 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 使用欧宝娱乐app下载地址\组件\安全\核心\角色\SwitchUserRole;使用欧宝娱乐app下载地址\组件\安全\核心\安全;/ /……公共类SomeService{私人美元安全;公共函数__construct(安全美元安全){美元这- >安全=美元安全;}公共函数someMethod(){/ /……如果(美元这- >安全- >isGranted (“ROLE_PREVIOUS_ADMIN”)){foreach(美元这- >安全- >getToken ()- >将getRoles ()作为美元角色){如果(美元角色运算符SwitchUserRole) {美元impersonatorUser=美元角色- >getSource ()- >getUser ();打破;}}}}} ROLE_ALLOWED_TO_SWITCH的角色。这个角色的名称可以修改通过角色设置。你也可以通过调整查询参数名称参数设置: YAML XML PHP 1 2 3 4 5 6 7 8 #配置/包/ security.yaml安全:#……防火墙:主要:#……switch_user:{角色:ROLE_ADMIN,参数:_want_to_be_this_user} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 < !——配置/包/安全。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”><配置>< !——……- - ><防火墙的名字=“主要”>< !——……- - ><切换用户角色=“ROLE_ADMIN”参数=“_want_to_be_this_user”/ >< /防火墙>< /配置>< /srv:容器> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 / /配置/包/ security.php美元容器- >loadFromExtension (“安全”,(/ /……“防火墙”= > [“主要”= > [/ /……“switch_user”= > [“角色”= >“ROLE_ADMIN”,“参数”= >“_want_to_be_this_user”,]]]]); switch_user检查一些新的自定义属性。这可以是任何东西,但不能开始具备ROLE_(只有你的选民将执行)被称为: YAML XML PHP 1 2 3 4 5 6 7 8 #配置/包/ security.yaml安全:#……防火墙:主要:#……switch_user:{角色:CAN_SWITCH_USER} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 < !——配置/包/安全。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”><配置>< !——……- - ><防火墙的名字=“主要”>< !——……- - ><切换用户角色=“CAN_SWITCH_USER”/ >< /防火墙>< /配置>< /srv:容器> 1 2 3 4 5 6 7 8 9 10 11 12 13 / /配置/包/ security.php美元容器- >loadFromExtension (“安全”,(/ /……“防火墙”= > [“主要”= > [/ /……“switch_user”= > [“角色”= >“CAN_SWITCH_USER”,]]]]); 然后,创建一个选民类响应这个角色,包括任何你想要的自定义逻辑: 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 名称空间应用程序\安全\选民;使用欧宝娱乐app下载地址\组件\安全\核心\身份验证\令牌\TokenInterface;使用欧宝娱乐app下载地址\组件\安全\核心\授权\选民\选民;使用欧宝娱乐app下载地址\组件\安全\核心\安全;使用欧宝娱乐app下载地址\组件\安全\核心\用户\用户界面;类SwitchToCustomerVoter扩展选民{私人美元安全;公共函数__construct(安全美元安全){美元这- >安全=美元安全;}受保护的函数支持(美元属性,美元主题){返回in_array (美元属性,(“CAN_SWITCH_USER”)& &美元主题运算符用户界面;}受保护的函数voteOnAttribute(美元属性,美元主题,TokenInterface美元令牌){美元用户=美元令牌- >getUser ();/ /如果用户匿名或者主体不是一个用户,不授权访问如果(!美元用户运算符用户界面| | !美元主题运算符用户界面){返回假;}/ /你仍然可以检查ROLE_ALLOWED_TO_SWITCH如果(美元这- >安全- >isGranted (“ROLE_ALLOWED_TO_SWITCH”)){返回真正的;}/ /检查你想要的任何角色如果(美元这- >安全- >isGranted (“ROLE_TECH_SUPPORT”)){返回真正的;}/ * *或者使用一些从你的用户自定义数据对象($ User - > isAllowedToSwitch()){返回true;}* /返回假;}} 就是这样!当切换用户,你的选民现在已经完全控制是否这是允许的。如果你的选民不叫,看到的<一个href=”//www.oldmanjams.com/doc/4.2/security/voters.html" class="reference internal">如何使用选民来检查用户的权限一个>。 security.switch_user事件对模拟完成后。的<一个href=”https://github.com/symfony/symfony/blob/4.2/src/Symfony/Component/Security/Http/Event/SwitchUserEvent.php" class="reference external" title="SwitchUserEvent”rel="external noopener noreferrer" target="_blank">SwitchUserEvent一个>传递给侦听器,您可以使用它来获取用户,您现在冒充。 的<一个href=”//www.oldmanjams.com/doc/4.2/session/locale_sticky_session.html" class="reference internal">使语言环境在用户会话期间“粘性”一个>文章不更新地区当你扮演一个用户。如果你做想一定要更新地区当切换用户时,添加一个事件订阅者在这个事件: 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 / / src / EventListener / SwitchUserSubscriber.php名称空间应用程序\EventListener;使用欧宝娱乐app下载地址\组件\EventDispatcher\EventSubscriberInterface;使用欧宝娱乐app下载地址\组件\安全\Http\事件\SwitchUserEvent;使用欧宝娱乐app下载地址\组件\安全\Http\SecurityEvents;类SwitchUserSubscriber实现了EventSubscriberInterface{公共函数onSwitchUser(SwitchUserEvent美元事件){美元请求=美元事件- >getRequest ();如果(美元请求- >hasSession () & & (美元会话=美元请求- >getSession ())) {美元会话- >集(“_locale”,/ /如果用户有一些getLocale()方法美元事件- >getTargetUser ()- >getLocale ());}}公共静态函数getSubscribedEvents(){返回(/ /为security.switch_user常数SecurityEvents::SWITCH_USER = >“onSwitchUser”,);}} 就是这样!如果你使用<一个href=”//www.oldmanjams.com/doc/4.2/service_container.html" class="reference internal">默认的服务。yaml的配置一个>,S欧宝娱乐app下载地址ymfony会自动发现服务和电话onSwitchUser每当发生切换用户。 有关事件订阅者的更多细节,明白了<一个href=”//www.oldmanjams.com/doc/4.2/event_dispatcher.html" class="reference internal">事件和事件监听器一个>。 这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。 考试在家里一个>< /p> 检查代码的性能在开发、测试、分期和生产一个>< /p> 阅读我们完整的Symfony和PHP目录欧宝娱乐app下载地址为您的web开发需要的解决方案。一个>< /p>
如何模拟一个用户吗 编辑该页面一个> 警告:你浏览的文档欧宝体育电话<一个href=”//www.oldmanjams.com/releases/4.2">欧宝娱乐app下载地址Symfony 4.2一个>,不再维护。 读<一个href=”//www.oldmanjams.com/doc/current/security/impersonating_user.html">这个页面的更新版本一个>Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。 知道什么时候扮演活跃一个>< /li> 找到原始用户一个>< /li> 控制查询参数一个>< /li> 限制用户切换一个>< /li> 事件一个>< /li> 谨慎 用户模拟与一些身份验证机制(如不兼容。REMOTE_USER)针对每个请求身份验证信息将被发送。 冒充用户可以通过激活switch_user防火墙侦听器: YAML XML PHP 1 2 3 4 5 6 7 8 #配置/包/ security.yaml安全:#……防火墙:主要:#……switch_user:真正的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 < !——配置/包/安全。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”><配置>< !——……- - ><防火墙的名字=“主要”>< !——……- - ><切换用户/ >< /防火墙>< /配置>< /srv:容器> 1 2 3 4 5 6 7 8 9 10 11 / /配置/包/ security.php美元容器- >loadFromExtension (“安全”,(/ /……“防火墙”= > [“主要”= > [/ /……“switch_user”= >真正的,]]]); 切换到另一个用户,添加一个查询字符串_switch_user参数和用户名(或其他领域我们的用户提供者使用加载用户)作为当前URL的值: 1 http://example.com/somewhere?_switch_user=thomas 切换回原来的用户,使用特别的_exit用户名: 1 http://example.com/somewhere?_switch_user=_exit 此功能只提供给用户提供一个特殊的角色ROLE_ALLOWED_TO_SWITCH。使用<一个href=”//www.oldmanjams.com/doc/4.2/security.html" class="reference internal">role_hierarchy一个>是一个伟大的方式给这个角色的用户需要它。 ROLE_PREVIOUS_ADMIN。例如,在一个模板,这个角色可以用来表示退出模拟链接: 1 2 3 {%如果is_granted (ROLE_PREVIOUS_ADMIN) %}<一个href=”{{路径(“主页”,{“_switch_user”:“_exit”})}}”>退出模拟< /一个>{%endif%} SwitchUserRole对象: 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 使用欧宝娱乐app下载地址\组件\安全\核心\角色\SwitchUserRole;使用欧宝娱乐app下载地址\组件\安全\核心\安全;/ /……公共类SomeService{私人美元安全;公共函数__construct(安全美元安全){美元这- >安全=美元安全;}公共函数someMethod(){/ /……如果(美元这- >安全- >isGranted (“ROLE_PREVIOUS_ADMIN”)){foreach(美元这- >安全- >getToken ()- >将getRoles ()作为美元角色){如果(美元角色运算符SwitchUserRole) {美元impersonatorUser=美元角色- >getSource ()- >getUser ();打破;}}}}} ROLE_ALLOWED_TO_SWITCH的角色。这个角色的名称可以修改通过角色设置。你也可以通过调整查询参数名称参数设置: YAML XML PHP 1 2 3 4 5 6 7 8 #配置/包/ security.yaml安全:#……防火墙:主要:#……switch_user:{角色:ROLE_ADMIN,参数:_want_to_be_this_user} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 < !——配置/包/安全。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”><配置>< !——……- - ><防火墙的名字=“主要”>< !——……- - ><切换用户角色=“ROLE_ADMIN”参数=“_want_to_be_this_user”/ >< /防火墙>< /配置>< /srv:容器> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 / /配置/包/ security.php美元容器- >loadFromExtension (“安全”,(/ /……“防火墙”= > [“主要”= > [/ /……“switch_user”= > [“角色”= >“ROLE_ADMIN”,“参数”= >“_want_to_be_this_user”,]]]]); switch_user检查一些新的自定义属性。这可以是任何东西,但不能开始具备ROLE_(只有你的选民将执行)被称为: YAML XML PHP 1 2 3 4 5 6 7 8 #配置/包/ security.yaml安全:#……防火墙:主要:#……switch_user:{角色:CAN_SWITCH_USER} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 < !——配置/包/安全。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”><配置>< !——……- - ><防火墙的名字=“主要”>< !——……- - ><切换用户角色=“CAN_SWITCH_USER”/ >< /防火墙>< /配置>< /srv:容器> 1 2 3 4 5 6 7 8 9 10 11 12 13 / /配置/包/ security.php美元容器- >loadFromExtension (“安全”,(/ /……“防火墙”= > [“主要”= > [/ /……“switch_user”= > [“角色”= >“CAN_SWITCH_USER”,]]]]); 然后,创建一个选民类响应这个角色,包括任何你想要的自定义逻辑: 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 名称空间应用程序\安全\选民;使用欧宝娱乐app下载地址\组件\安全\核心\身份验证\令牌\TokenInterface;使用欧宝娱乐app下载地址\组件\安全\核心\授权\选民\选民;使用欧宝娱乐app下载地址\组件\安全\核心\安全;使用欧宝娱乐app下载地址\组件\安全\核心\用户\用户界面;类SwitchToCustomerVoter扩展选民{私人美元安全;公共函数__construct(安全美元安全){美元这- >安全=美元安全;}受保护的函数支持(美元属性,美元主题){返回in_array (美元属性,(“CAN_SWITCH_USER”)& &美元主题运算符用户界面;}受保护的函数voteOnAttribute(美元属性,美元主题,TokenInterface美元令牌){美元用户=美元令牌- >getUser ();/ /如果用户匿名或者主体不是一个用户,不授权访问如果(!美元用户运算符用户界面| | !美元主题运算符用户界面){返回假;}/ /你仍然可以检查ROLE_ALLOWED_TO_SWITCH如果(美元这- >安全- >isGranted (“ROLE_ALLOWED_TO_SWITCH”)){返回真正的;}/ /检查你想要的任何角色如果(美元这- >安全- >isGranted (“ROLE_TECH_SUPPORT”)){返回真正的;}/ * *或者使用一些从你的用户自定义数据对象($ User - > isAllowedToSwitch()){返回true;}* /返回假;}} 就是这样!当切换用户,你的选民现在已经完全控制是否这是允许的。如果你的选民不叫,看到的<一个href=”//www.oldmanjams.com/doc/4.2/security/voters.html" class="reference internal">如何使用选民来检查用户的权限一个>。 security.switch_user事件对模拟完成后。的<一个href=”https://github.com/symfony/symfony/blob/4.2/src/Symfony/Component/Security/Http/Event/SwitchUserEvent.php" class="reference external" title="SwitchUserEvent”rel="external noopener noreferrer" target="_blank">SwitchUserEvent一个>传递给侦听器,您可以使用它来获取用户,您现在冒充。 的<一个href=”//www.oldmanjams.com/doc/4.2/session/locale_sticky_session.html" class="reference internal">使语言环境在用户会话期间“粘性”一个>文章不更新地区当你扮演一个用户。如果你做想一定要更新地区当切换用户时,添加一个事件订阅者在这个事件: 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 / / src / EventListener / SwitchUserSubscriber.php名称空间应用程序\EventListener;使用欧宝娱乐app下载地址\组件\EventDispatcher\EventSubscriberInterface;使用欧宝娱乐app下载地址\组件\安全\Http\事件\SwitchUserEvent;使用欧宝娱乐app下载地址\组件\安全\Http\SecurityEvents;类SwitchUserSubscriber实现了EventSubscriberInterface{公共函数onSwitchUser(SwitchUserEvent美元事件){美元请求=美元事件- >getRequest ();如果(美元请求- >hasSession () & & (美元会话=美元请求- >getSession ())) {美元会话- >集(“_locale”,/ /如果用户有一些getLocale()方法美元事件- >getTargetUser ()- >getLocale ());}}公共静态函数getSubscribedEvents(){返回(/ /为security.switch_user常数SecurityEvents::SWITCH_USER = >“onSwitchUser”,);}} 就是这样!如果你使用<一个href=”//www.oldmanjams.com/doc/4.2/service_container.html" class="reference internal">默认的服务。yaml的配置一个>,S欧宝娱乐app下载地址ymfony会自动发现服务和电话onSwitchUser每当发生切换用户。 有关事件订阅者的更多细节,明白了<一个href=”//www.oldmanjams.com/doc/4.2/event_dispatcher.html" class="reference internal">事件和事件监听器一个>。