安全
编辑该页面一个>警告:你浏览的文档欧宝体育电话<一个href="//www.oldmanjams.com/releases/5.0">欧宝娱乐app下载地址Symfony 5.0一个>,不再维护。
读<一个href="//www.oldmanjams.com/doc/current/security.html">这个页面的更新版本一个>Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
< /div>安全一个>< /h1>
截屏视频
你喜欢视频教程?检查<一个href="https://symfonycasts.com/screencast/symfony-security" class="reference external" rel="external noopener noreferrer" target="_blank">欧宝娱乐app下载地址Symfony安全视频系列一个>。
< /div>
欧宝娱乐app下载地址Symfony的安全系统是非常强大的,但是它也可以令人费解的设置。别担心!在本文中,您将了解如何设置应用程序的安全系统一步一步:
其他一些重要的话题进行了讨论。
3)认证和防火墙一个>< /h2>
安全系统中配置配置/包/ security.yaml
。的大多数重要的部分是防火墙
:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
#配置/包/ security.yaml安全:防火墙:戴夫:模式:^ /(_(分析器| wdt) | css |图片| js) /安全:假主要:匿名:懒惰的
“防火墙”是你的认证系统:配置低于它定义了如何用户将能够进行身份验证(例如登录表单,API的令牌,等等)。
只有一个防火墙是活跃在每个请求:Symfony使用欧宝娱乐app下载地址模式
找到第一个匹配的关键(你也可以<一个href="//www.oldmanjams.com/doc/5.0/security/firewall_restriction.html" class="reference internal">比赛由主机或其他的东西一个>)。的dev
防火墙是一个假的防火墙:它只是确保你不意外块Symfony的开发工具——生活在url欧宝娱乐app下载地址/ _profiler
和/ _wdt
。
所有真正的url的处理主要
防火墙(不模式
关键是它匹配所有url)。防火墙可以有许多的身份验证模式,换句话说很多方面问“你是谁?”的问题。通常,用户是未知的(即没有登录),当他们第一次访问你的网站。的匿名
模式,如果启用,用于这些请求。
事实上,如果你现在去主页,你将访问,你会发现你“身份验证”不久。
。防火墙,它不知道你的身份验证,所以,你是匿名的:
这意味着任何请求都可以有一个匿名的令牌访问一些资源,虽然一些行为(即一些页面或按钮)仍然可以要求特定的特权。一个用户可以访问登录未经身份验证的一种形式作为一种独特的用户(否则无限重定向循环会要求用户进行身份验证,而试图这样做)。
稍后您将了解如何拒绝访问特定的url,控制器,或部分模板。
提示
的懒惰的
匿名的方式阻止会话开始如果没有必要授权(即显式检查用户特权)。这是很重要的保持请求缓存(参见<一个href="//www.oldmanjams.com/doc/5.0/http_cache.html" class="reference internal">HTTP缓存一个>)。
< /div>
请注意
如果您没有看到工具栏,安装<一个href="//www.oldmanjams.com/doc/5.0/profiler.html" class="reference internal">分析器一个>:
1
美元作曲家要求- dev symfony / pr欧宝娱乐app下载地址ofiler-pack
现在,我们了解我们的防火墙,下一步是创建一个为您的用户进行身份验证!
3 b)对用户进行身份验证一个>< /h2>
身份验证在Symfony会觉得有点“欧宝娱乐app下载地址魔法”。这是因为,而不是建立一个路线&控制器来处理登录,你会激活一个身份验证提供者:一些代码,自动运行之前你的控制器。
欧宝娱乐app下载地址Symfony有几个<一个href="//www.oldmanjams.com/doc/5.0/security/auth_providers.html" class="reference internal">内置的身份验证提供者一个>。如果你的用例匹配其中一个完全,太好了!但是,在大多数情况下——包括一个登录表单我们建议建立一个身份:一个类,它允许您控制每一个身份验证过程的一部分(参见下一节)。
提示
如果您的应用程序日志的用户通过第三方服务,如谷歌、Facebook或Twitter登录(社会),查看<一个href="https://github.com/hwi/HWIOAuthBundle" class="reference external" rel="external noopener noreferrer" target="_blank">HWIOAuthBundle一个>欧宝下载链接社区包。
< /div>
4)拒绝访问,其他角色和授权一个>< /h2>
用户现在可以登录到应用程序使用您的登录表单。太棒了!现在,你需要学习如何与用户拒绝访问和工作对象。这就是所谓的授权,它的工作就是决定如果一个用户可以访问一些资源(一个URL、一个模型对象,一个方法调用,…)。
授权的过程有两个不同的方面:
- 用户登录时收到一组特定的角色(如。
ROLE_ADMIN
)。
- 你添加代码,这样一个资源(如URL,控制器)需要一个特定的“属性”(最常见的一个角色
ROLE_ADMIN
)来访问。
添加代码拒绝访问一个>< /h3>
有两个拒绝访问一些方法:
注销一个>< /h2>
启用日志记录,激活注销
配置参数下防火墙:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ security.yaml安全:#……防火墙:主要:#……注销:路径:app_logout#在注销后重定向#目标:app_any_route
接下来,您将需要创建一个路线这个URL(但不是一个控制器):
- 注释
- YAML
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ SecurityController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类SecurityController扩展AbstractController{/ * * *@Route(name = " /注销”“app_logout”方法={“获得”})* /公共函数注销(){/ /控制器可以空白:它永远不会执行!扔新\异常(‘\ ' t忘记激活security.yaml注销”);}}
这是它!通过发送一个用户app_logout
路线(即/注销
Sy欧宝娱乐app下载地址mfony将un-authenticate当前用户重定向。
提示
需要更多的控制注销后会发生什么?添加一个success_handler
关键在注销
点到一个服务id类的实现<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Security/Http/Logout/LogoutSuccessHandlerInterface.php" class="reference external" title="LogoutSuccessHandlerInterface" rel="external noopener noreferrer" target="_blank">LogoutSuccessHandlerInterface一个>。
< /div>
层次的角色一个>< /h2>
而不是给每个用户很多角色,您可以通过创建一个定义角色继承规则角色层次结构:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……role_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
用户提供的ROLE_ADMIN
也会有作用ROLE_USER
的角色。和用户ROLE_SUPER_ADMIN
,会自动ROLE_ADMIN
,ROLE_ALLOWED_TO_SWITCH
和ROLE_USER
(继承自ROLE_ADMIN
)。
角色层次的工作,不要试图调用$ user - >将getRoles ()
手动。例如,在一个扩展的控制器<一个href="//www.oldmanjams.com/doc/5.0/controller.html" class="reference internal">基本控制器一个>:
1 2 3 4 5 6
/ /坏- $ user - >将getRoles()将不知道角色的层次结构美元hasAccess= in_array (“ROLE_ADMIN”,美元用户- >将getRoles ());/ /好——正常安全的使用方法美元hasAccess=美元这- >isGranted (“ROLE_ADMIN”);美元这- >denyAccessUnlessGranted (“ROLE_ADMIN”);
请注意
的role_hierarchy
值是静态的,你不能,例如,角色层次结构存储在一个数据库中。如果你需要创建一个定制的<一个href="//www.oldmanjams.com/doc/5.0/security/voters.html" class="reference internal">安全选民一个>查找数据库中的用户角色。
< /div>
了解更多一个>< /h2>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
截屏视频
你喜欢视频教程?检查<一个href="https://symfonycasts.com/screencast/symfony-security" class="reference external" rel="external noopener noreferrer" target="_blank">欧宝娱乐app下载地址Symfony安全视频系列一个>。
< /div>欧宝娱乐app下载地址Symfony的安全系统是非常强大的,但是它也可以令人费解的设置。别担心!在本文中,您将了解如何设置应用程序的安全系统一步一步:
其他一些重要的话题进行了讨论。
3)认证和防火墙一个>< /h2>
安全系统中配置配置/包/ security.yaml
。的大多数重要的部分是防火墙
:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
#配置/包/ security.yaml安全:防火墙:戴夫:模式:^ /(_(分析器| wdt) | css |图片| js) /安全:假主要:匿名:懒惰的
“防火墙”是你的认证系统:配置低于它定义了如何用户将能够进行身份验证(例如登录表单,API的令牌,等等)。
只有一个防火墙是活跃在每个请求:Symfony使用欧宝娱乐app下载地址模式
找到第一个匹配的关键(你也可以<一个href="//www.oldmanjams.com/doc/5.0/security/firewall_restriction.html" class="reference internal">比赛由主机或其他的东西一个>)。的dev
防火墙是一个假的防火墙:它只是确保你不意外块Symfony的开发工具——生活在url欧宝娱乐app下载地址/ _profiler
和/ _wdt
。
所有真正的url的处理主要
防火墙(不模式
关键是它匹配所有url)。防火墙可以有许多的身份验证模式,换句话说很多方面问“你是谁?”的问题。通常,用户是未知的(即没有登录),当他们第一次访问你的网站。的匿名
模式,如果启用,用于这些请求。
事实上,如果你现在去主页,你将访问,你会发现你“身份验证”不久。
。防火墙,它不知道你的身份验证,所以,你是匿名的:
这意味着任何请求都可以有一个匿名的令牌访问一些资源,虽然一些行为(即一些页面或按钮)仍然可以要求特定的特权。一个用户可以访问登录未经身份验证的一种形式作为一种独特的用户(否则无限重定向循环会要求用户进行身份验证,而试图这样做)。
稍后您将了解如何拒绝访问特定的url,控制器,或部分模板。
提示
的懒惰的
匿名的方式阻止会话开始如果没有必要授权(即显式检查用户特权)。这是很重要的保持请求缓存(参见<一个href="//www.oldmanjams.com/doc/5.0/http_cache.html" class="reference internal">HTTP缓存一个>)。
< /div>
请注意
如果您没有看到工具栏,安装<一个href="//www.oldmanjams.com/doc/5.0/profiler.html" class="reference internal">分析器一个>:
1
美元作曲家要求- dev symfony / pr欧宝娱乐app下载地址ofiler-pack
现在,我们了解我们的防火墙,下一步是创建一个为您的用户进行身份验证!
3 b)对用户进行身份验证一个>< /h2>
身份验证在Symfony会觉得有点“欧宝娱乐app下载地址魔法”。这是因为,而不是建立一个路线&控制器来处理登录,你会激活一个身份验证提供者:一些代码,自动运行之前你的控制器。
欧宝娱乐app下载地址Symfony有几个<一个href="//www.oldmanjams.com/doc/5.0/security/auth_providers.html" class="reference internal">内置的身份验证提供者一个>。如果你的用例匹配其中一个完全,太好了!但是,在大多数情况下——包括一个登录表单我们建议建立一个身份:一个类,它允许您控制每一个身份验证过程的一部分(参见下一节)。
提示
如果您的应用程序日志的用户通过第三方服务,如谷歌、Facebook或Twitter登录(社会),查看<一个href="https://github.com/hwi/HWIOAuthBundle" class="reference external" rel="external noopener noreferrer" target="_blank">HWIOAuthBundle一个>欧宝下载链接社区包。
< /div>
4)拒绝访问,其他角色和授权一个>< /h2>
用户现在可以登录到应用程序使用您的登录表单。太棒了!现在,你需要学习如何与用户拒绝访问和工作对象。这就是所谓的授权,它的工作就是决定如果一个用户可以访问一些资源(一个URL、一个模型对象,一个方法调用,…)。
授权的过程有两个不同的方面:
- 用户登录时收到一组特定的角色(如。
ROLE_ADMIN
)。
- 你添加代码,这样一个资源(如URL,控制器)需要一个特定的“属性”(最常见的一个角色
ROLE_ADMIN
)来访问。
添加代码拒绝访问一个>< /h3>
有两个拒绝访问一些方法:
注销一个>< /h2>
启用日志记录,激活注销
配置参数下防火墙:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ security.yaml安全:#……防火墙:主要:#……注销:路径:app_logout#在注销后重定向#目标:app_any_route
接下来,您将需要创建一个路线这个URL(但不是一个控制器):
- 注释
- YAML
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ SecurityController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类SecurityController扩展AbstractController{/ * * *@Route(name = " /注销”“app_logout”方法={“获得”})* /公共函数注销(){/ /控制器可以空白:它永远不会执行!扔新\异常(‘\ ' t忘记激活security.yaml注销”);}}
这是它!通过发送一个用户app_logout
路线(即/注销
Sy欧宝娱乐app下载地址mfony将un-authenticate当前用户重定向。
提示
需要更多的控制注销后会发生什么?添加一个success_handler
关键在注销
点到一个服务id类的实现<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Security/Http/Logout/LogoutSuccessHandlerInterface.php" class="reference external" title="LogoutSuccessHandlerInterface" rel="external noopener noreferrer" target="_blank">LogoutSuccessHandlerInterface一个>。
< /div>
层次的角色一个>< /h2>
而不是给每个用户很多角色,您可以通过创建一个定义角色继承规则角色层次结构:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……role_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
用户提供的ROLE_ADMIN
也会有作用ROLE_USER
的角色。和用户ROLE_SUPER_ADMIN
,会自动ROLE_ADMIN
,ROLE_ALLOWED_TO_SWITCH
和ROLE_USER
(继承自ROLE_ADMIN
)。
角色层次的工作,不要试图调用$ user - >将getRoles ()
手动。例如,在一个扩展的控制器<一个href="//www.oldmanjams.com/doc/5.0/controller.html" class="reference internal">基本控制器一个>:
1 2 3 4 5 6
/ /坏- $ user - >将getRoles()将不知道角色的层次结构美元hasAccess= in_array (“ROLE_ADMIN”,美元用户- >将getRoles ());/ /好——正常安全的使用方法美元hasAccess=美元这- >isGranted (“ROLE_ADMIN”);美元这- >denyAccessUnlessGranted (“ROLE_ADMIN”);
请注意
的role_hierarchy
值是静态的,你不能,例如,角色层次结构存储在一个数据库中。如果你需要创建一个定制的<一个href="//www.oldmanjams.com/doc/5.0/security/voters.html" class="reference internal">安全选民一个>查找数据库中的用户角色。
< /div>
了解更多一个>< /h2>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
配置/包/ security.yaml
。的大多数重要的部分是防火墙
:- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
#配置/包/ security.yaml安全:防火墙:戴夫:模式:^ /(_(分析器| wdt) | css |图片| js) /安全:假主要:匿名:懒惰的
模式
找到第一个匹配的关键(你也可以<一个href="//www.oldmanjams.com/doc/5.0/security/firewall_restriction.html" class="reference internal">比赛由主机或其他的东西一个>)。的dev
防火墙是一个假的防火墙:它只是确保你不意外块Symfony的开发工具——生活在url欧宝娱乐app下载地址/ _profiler
和/ _wdt
。主要
防火墙(不模式
关键是它匹配所有url)。防火墙可以有许多的身份验证模式,换句话说很多方面问“你是谁?”的问题。通常,用户是未知的(即没有登录),当他们第一次访问你的网站。的匿名
模式,如果启用,用于这些请求。不久。
。防火墙,它不知道你的身份验证,所以,你是匿名的:提示
的懒惰的
匿名的方式阻止会话开始如果没有必要授权(即显式检查用户特权)。这是很重要的保持请求缓存(参见<一个href="//www.oldmanjams.com/doc/5.0/http_cache.html" class="reference internal">HTTP缓存一个>)。
请注意
如果您没有看到工具栏,安装<一个href="//www.oldmanjams.com/doc/5.0/profiler.html" class="reference internal">分析器一个>:
1
美元作曲家要求- dev symfony / pr欧宝娱乐app下载地址ofiler-pack
现在,我们了解我们的防火墙,下一步是创建一个为您的用户进行身份验证!
3 b)对用户进行身份验证一个>< /h2>
身份验证在Symfony会觉得有点“欧宝娱乐app下载地址魔法”。这是因为,而不是建立一个路线&控制器来处理登录,你会激活一个身份验证提供者:一些代码,自动运行之前你的控制器。
欧宝娱乐app下载地址Symfony有几个<一个href="//www.oldmanjams.com/doc/5.0/security/auth_providers.html" class="reference internal">内置的身份验证提供者一个>。如果你的用例匹配其中一个完全,太好了!但是,在大多数情况下——包括一个登录表单我们建议建立一个身份:一个类,它允许您控制每一个身份验证过程的一部分(参见下一节)。
提示
如果您的应用程序日志的用户通过第三方服务,如谷歌、Facebook或Twitter登录(社会),查看<一个href="https://github.com/hwi/HWIOAuthBundle" class="reference external" rel="external noopener noreferrer" target="_blank">HWIOAuthBundle一个>欧宝下载链接社区包。
< /div>
4)拒绝访问,其他角色和授权一个>< /h2>
用户现在可以登录到应用程序使用您的登录表单。太棒了!现在,你需要学习如何与用户拒绝访问和工作对象。这就是所谓的授权,它的工作就是决定如果一个用户可以访问一些资源(一个URL、一个模型对象,一个方法调用,…)。
授权的过程有两个不同的方面:
- 用户登录时收到一组特定的角色(如。
ROLE_ADMIN
)。
- 你添加代码,这样一个资源(如URL,控制器)需要一个特定的“属性”(最常见的一个角色
ROLE_ADMIN
)来访问。
添加代码拒绝访问一个>< /h3>
有两个拒绝访问一些方法:
注销一个>< /h2>
启用日志记录,激活注销
配置参数下防火墙:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ security.yaml安全:#……防火墙:主要:#……注销:路径:app_logout#在注销后重定向#目标:app_any_route
接下来,您将需要创建一个路线这个URL(但不是一个控制器):
- 注释
- YAML
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ SecurityController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类SecurityController扩展AbstractController{/ * * *@Route(name = " /注销”“app_logout”方法={“获得”})* /公共函数注销(){/ /控制器可以空白:它永远不会执行!扔新\异常(‘\ ' t忘记激活security.yaml注销”);}}
这是它!通过发送一个用户app_logout
路线(即/注销
Sy欧宝娱乐app下载地址mfony将un-authenticate当前用户重定向。
提示
需要更多的控制注销后会发生什么?添加一个success_handler
关键在注销
点到一个服务id类的实现<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Security/Http/Logout/LogoutSuccessHandlerInterface.php" class="reference external" title="LogoutSuccessHandlerInterface" rel="external noopener noreferrer" target="_blank">LogoutSuccessHandlerInterface一个>。
< /div>
层次的角色一个>< /h2>
而不是给每个用户很多角色,您可以通过创建一个定义角色继承规则角色层次结构:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……role_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
用户提供的ROLE_ADMIN
也会有作用ROLE_USER
的角色。和用户ROLE_SUPER_ADMIN
,会自动ROLE_ADMIN
,ROLE_ALLOWED_TO_SWITCH
和ROLE_USER
(继承自ROLE_ADMIN
)。
角色层次的工作,不要试图调用$ user - >将getRoles ()
手动。例如,在一个扩展的控制器<一个href="//www.oldmanjams.com/doc/5.0/controller.html" class="reference internal">基本控制器一个>:
1 2 3 4 5 6
/ /坏- $ user - >将getRoles()将不知道角色的层次结构美元hasAccess= in_array (“ROLE_ADMIN”,美元用户- >将getRoles ());/ /好——正常安全的使用方法美元hasAccess=美元这- >isGranted (“ROLE_ADMIN”);美元这- >denyAccessUnlessGranted (“ROLE_ADMIN”);
请注意
的role_hierarchy
值是静态的,你不能,例如,角色层次结构存储在一个数据库中。如果你需要创建一个定制的<一个href="//www.oldmanjams.com/doc/5.0/security/voters.html" class="reference internal">安全选民一个>查找数据库中的用户角色。
< /div>
了解更多一个>< /h2>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
提示
如果您的应用程序日志的用户通过第三方服务,如谷歌、Facebook或Twitter登录(社会),查看<一个href="https://github.com/hwi/HWIOAuthBundle" class="reference external" rel="external noopener noreferrer" target="_blank">HWIOAuthBundle一个>欧宝下载链接社区包。
< /div>4)拒绝访问,其他角色和授权一个>< /h2>
用户现在可以登录到应用程序使用您的登录表单。太棒了!现在,你需要学习如何与用户拒绝访问和工作对象。这就是所谓的授权,它的工作就是决定如果一个用户可以访问一些资源(一个URL、一个模型对象,一个方法调用,…)。
授权的过程有两个不同的方面:
- 用户登录时收到一组特定的角色(如。
ROLE_ADMIN
)。
- 你添加代码,这样一个资源(如URL,控制器)需要一个特定的“属性”(最常见的一个角色
ROLE_ADMIN
)来访问。
添加代码拒绝访问一个>< /h3>
有两个拒绝访问一些方法:
注销一个>< /h2>
启用日志记录,激活注销
配置参数下防火墙:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ security.yaml安全:#……防火墙:主要:#……注销:路径:app_logout#在注销后重定向#目标:app_any_route
接下来,您将需要创建一个路线这个URL(但不是一个控制器):
- 注释
- YAML
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ SecurityController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类SecurityController扩展AbstractController{/ * * *@Route(name = " /注销”“app_logout”方法={“获得”})* /公共函数注销(){/ /控制器可以空白:它永远不会执行!扔新\异常(‘\ ' t忘记激活security.yaml注销”);}}
这是它!通过发送一个用户app_logout
路线(即/注销
Sy欧宝娱乐app下载地址mfony将un-authenticate当前用户重定向。
提示
需要更多的控制注销后会发生什么?添加一个success_handler
关键在注销
点到一个服务id类的实现<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Security/Http/Logout/LogoutSuccessHandlerInterface.php" class="reference external" title="LogoutSuccessHandlerInterface" rel="external noopener noreferrer" target="_blank">LogoutSuccessHandlerInterface一个>。
< /div>
层次的角色一个>< /h2>
而不是给每个用户很多角色,您可以通过创建一个定义角色继承规则角色层次结构:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……role_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
用户提供的ROLE_ADMIN
也会有作用ROLE_USER
的角色。和用户ROLE_SUPER_ADMIN
,会自动ROLE_ADMIN
,ROLE_ALLOWED_TO_SWITCH
和ROLE_USER
(继承自ROLE_ADMIN
)。
角色层次的工作,不要试图调用$ user - >将getRoles ()
手动。例如,在一个扩展的控制器<一个href="//www.oldmanjams.com/doc/5.0/controller.html" class="reference internal">基本控制器一个>:
1 2 3 4 5 6
/ /坏- $ user - >将getRoles()将不知道角色的层次结构美元hasAccess= in_array (“ROLE_ADMIN”,美元用户- >将getRoles ());/ /好——正常安全的使用方法美元hasAccess=美元这- >isGranted (“ROLE_ADMIN”);美元这- >denyAccessUnlessGranted (“ROLE_ADMIN”);
请注意
的role_hierarchy
值是静态的,你不能,例如,角色层次结构存储在一个数据库中。如果你需要创建一个定制的<一个href="//www.oldmanjams.com/doc/5.0/security/voters.html" class="reference internal">安全选民一个>查找数据库中的用户角色。
< /div>
了解更多一个>< /h2>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
ROLE_ADMIN
)。ROLE_ADMIN
)来访问。添加代码拒绝访问一个>< /h3>
有两个拒绝访问一些方法:
注销一个>< /h2>
启用日志记录,激活注销
配置参数下防火墙:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ security.yaml安全:#……防火墙:主要:#……注销:路径:app_logout#在注销后重定向#目标:app_any_route
接下来,您将需要创建一个路线这个URL(但不是一个控制器):
- 注释
- YAML
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ SecurityController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类SecurityController扩展AbstractController{/ * * *@Route(name = " /注销”“app_logout”方法={“获得”})* /公共函数注销(){/ /控制器可以空白:它永远不会执行!扔新\异常(‘\ ' t忘记激活security.yaml注销”);}}
这是它!通过发送一个用户app_logout
路线(即/注销
Sy欧宝娱乐app下载地址mfony将un-authenticate当前用户重定向。
提示
需要更多的控制注销后会发生什么?添加一个success_handler
关键在注销
点到一个服务id类的实现<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Security/Http/Logout/LogoutSuccessHandlerInterface.php" class="reference external" title="LogoutSuccessHandlerInterface" rel="external noopener noreferrer" target="_blank">LogoutSuccessHandlerInterface一个>。
< /div>
层次的角色一个>< /h2>
而不是给每个用户很多角色,您可以通过创建一个定义角色继承规则角色层次结构:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……role_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
用户提供的ROLE_ADMIN
也会有作用ROLE_USER
的角色。和用户ROLE_SUPER_ADMIN
,会自动ROLE_ADMIN
,ROLE_ALLOWED_TO_SWITCH
和ROLE_USER
(继承自ROLE_ADMIN
)。
角色层次的工作,不要试图调用$ user - >将getRoles ()
手动。例如,在一个扩展的控制器<一个href="//www.oldmanjams.com/doc/5.0/controller.html" class="reference internal">基本控制器一个>:
1 2 3 4 5 6
/ /坏- $ user - >将getRoles()将不知道角色的层次结构美元hasAccess= in_array (“ROLE_ADMIN”,美元用户- >将getRoles ());/ /好——正常安全的使用方法美元hasAccess=美元这- >isGranted (“ROLE_ADMIN”);美元这- >denyAccessUnlessGranted (“ROLE_ADMIN”);
请注意
的role_hierarchy
值是静态的,你不能,例如,角色层次结构存储在一个数据库中。如果你需要创建一个定制的<一个href="//www.oldmanjams.com/doc/5.0/security/voters.html" class="reference internal">安全选民一个>查找数据库中的用户角色。
< /div>
了解更多一个>< /h2>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
注销一个>< /h2>
启用日志记录,激活注销
配置参数下防火墙:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ security.yaml安全:#……防火墙:主要:#……注销:路径:app_logout#在注销后重定向#目标:app_any_route
接下来,您将需要创建一个路线这个URL(但不是一个控制器):
- 注释
- YAML
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ SecurityController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类SecurityController扩展AbstractController{/ * * *@Route(name = " /注销”“app_logout”方法={“获得”})* /公共函数注销(){/ /控制器可以空白:它永远不会执行!扔新\异常(‘\ ' t忘记激活security.yaml注销”);}}
这是它!通过发送一个用户app_logout
路线(即/注销
Sy欧宝娱乐app下载地址mfony将un-authenticate当前用户重定向。
提示
需要更多的控制注销后会发生什么?添加一个success_handler
关键在注销
点到一个服务id类的实现<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Security/Http/Logout/LogoutSuccessHandlerInterface.php" class="reference external" title="LogoutSuccessHandlerInterface" rel="external noopener noreferrer" target="_blank">LogoutSuccessHandlerInterface一个>。
< /div>
层次的角色一个>< /h2>
而不是给每个用户很多角色,您可以通过创建一个定义角色继承规则角色层次结构:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……role_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
用户提供的ROLE_ADMIN
也会有作用ROLE_USER
的角色。和用户ROLE_SUPER_ADMIN
,会自动ROLE_ADMIN
,ROLE_ALLOWED_TO_SWITCH
和ROLE_USER
(继承自ROLE_ADMIN
)。
角色层次的工作,不要试图调用$ user - >将getRoles ()
手动。例如,在一个扩展的控制器<一个href="//www.oldmanjams.com/doc/5.0/controller.html" class="reference internal">基本控制器一个>:
1 2 3 4 5 6
/ /坏- $ user - >将getRoles()将不知道角色的层次结构美元hasAccess= in_array (“ROLE_ADMIN”,美元用户- >将getRoles ());/ /好——正常安全的使用方法美元hasAccess=美元这- >isGranted (“ROLE_ADMIN”);美元这- >denyAccessUnlessGranted (“ROLE_ADMIN”);
请注意
的role_hierarchy
值是静态的,你不能,例如,角色层次结构存储在一个数据库中。如果你需要创建一个定制的<一个href="//www.oldmanjams.com/doc/5.0/security/voters.html" class="reference internal">安全选民一个>查找数据库中的用户角色。
< /div>
了解更多一个>< /h2>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
这项工作,包括代码示例,许可下<一个rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
注销
配置参数下防火墙:- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ security.yaml安全:#……防火墙:主要:#……注销:路径:app_logout#在注销后重定向#目标:app_any_route
- 注释
- YAML
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ SecurityController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类SecurityController扩展AbstractController{/ * * *@Route(name = " /注销”“app_logout”方法={“获得”})* /公共函数注销(){/ /控制器可以空白:它永远不会执行!扔新\异常(‘\ ' t忘记激活security.yaml注销”);}}
app_logout
路线(即/注销
Sy欧宝娱乐app下载地址mfony将un-authenticate当前用户重定向。提示
需要更多的控制注销后会发生什么?添加一个success_handler
关键在注销
点到一个服务id类的实现<一个href="https://github.com/symfony/symfony/blob/5.0/src/Symfony/Component/Security/Http/Logout/LogoutSuccessHandlerInterface.php" class="reference external" title="LogoutSuccessHandlerInterface" rel="external noopener noreferrer" target="_blank">LogoutSuccessHandlerInterface一个>。
层次的角色一个>< /h2>
而不是给每个用户很多角色,您可以通过创建一个定义角色继承规则角色层次结构:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……role_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
用户提供的ROLE_ADMIN
也会有作用ROLE_USER
的角色。和用户ROLE_SUPER_ADMIN
,会自动ROLE_ADMIN
,ROLE_ALLOWED_TO_SWITCH
和ROLE_USER
(继承自ROLE_ADMIN
)。
角色层次的工作,不要试图调用$ user - >将getRoles ()
手动。例如,在一个扩展的控制器<一个href="//www.oldmanjams.com/doc/5.0/controller.html" class="reference internal">基本控制器一个>:
1 2 3 4 5 6
/ /坏- $ user - >将getRoles()将不知道角色的层次结构美元hasAccess= in_array (“ROLE_ADMIN”,美元用户- >将getRoles ());/ /好——正常安全的使用方法美元hasAccess=美元这- >isGranted (“ROLE_ADMIN”);美元这- >denyAccessUnlessGranted (“ROLE_ADMIN”);
请注意
的role_hierarchy
值是静态的,你不能,例如,角色层次结构存储在一个数据库中。如果你需要创建一个定制的<一个href="//www.oldmanjams.com/doc/5.0/security/voters.html" class="reference internal">安全选民一个>查找数据库中的用户角色。
< /div>
了解更多一个>< /h2>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……role_hierarchy:ROLE_ADMIN:ROLE_USERROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
ROLE_ADMIN
也会有作用ROLE_USER
的角色。和用户ROLE_SUPER_ADMIN
,会自动ROLE_ADMIN
,ROLE_ALLOWED_TO_SWITCH
和ROLE_USER
(继承自ROLE_ADMIN
)。$ user - >将getRoles ()
手动。例如,在一个扩展的控制器<一个href="//www.oldmanjams.com/doc/5.0/controller.html" class="reference internal">基本控制器一个>:1 2 3 4 5 6
/ /坏- $ user - >将getRoles()将不知道角色的层次结构美元hasAccess= in_array (“ROLE_ADMIN”,美元用户- >将getRoles ());/ /好——正常安全的使用方法美元hasAccess=美元这- >isGranted (“ROLE_ADMIN”);美元这- >denyAccessUnlessGranted (“ROLE_ADMIN”);
请注意
的role_hierarchy
值是静态的,你不能,例如,角色层次结构存储在一个数据库中。如果你需要创建一个定制的<一个href="//www.oldmanjams.com/doc/5.0/security/voters.html" class="reference internal">安全选民一个>查找数据库中的用户角色。
了解更多一个>< /h2>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
身份验证(识别/登录用户)一个>< /h3>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
- 如何构建一个登录表单吗一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>
- 如何构建一个JSON认证端点一个>< /li>
- 自定义的身份验证系统保护(API象征性的例子)一个>< /li>
- 迁移密码散列如何一个>< /li>
- 内置的身份验证提供者一个>< /li>
- 安全的用户提供一个>< /li>
- 针对LDAP服务器进行身份验证一个>< /li>
- 如何添加“记住我”登录功能一个>< /li>
- 如何模拟一个用户吗一个>< /li>
- 如何创建并启用自定义用户跳棋一个>< /li>
- 每个用户如何使用不同的密码编码器算法一个>< /li>
- 如何使用多个护卫的身份验证器吗一个>< /li>
- 防火墙如何限制要求吗一个>< /li>
- 如何实现CSRF保护吗一个>< /li>
- 如何创建一个自定义身份验证提供者一个>< /li>
- 如何添加一个重置密码的功能一个>< /li>