halloverden / symfony-security-bundle
halloverden/symfony-security 的 Bundle
3.1.0
2022-06-28 12:58 UTC
Requires
- php: >=7.2
- halloverden/symfony-security: ^3.0.0
- symfony/dependency-injection: ^v4.4.13|^5.1.5
- symfony/event-dispatcher: ^v4.4.13|^5.1.5
- symfony/framework-bundle: ^v4.4.13|^5.1.5
- symfony/http-kernel: ^v4.4.13|^5.1.5
- symfony/security-bundle: ^v4.4.13|^5.1.5
Requires (Dev)
- symfony/validator: ^v4.4.13|^v5.1.5
- dev-master
- 3.1.0
- 3.0.1
- 3.0.0
- 2.1.0
- 2.0.1
- 2.0.0
- 1.3.0
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- dev-dependabot/composer/symfony/http-kernel-5.4.20
- dev-dependabot/composer/symfony/security-bundle-5.4.20
- dev-feature/upgrade-to-symfony-security-4
- dev-feature/access-definition-metadata-expression
- dev-feature/access-defintion-service-in-base-voter
- dev-feature/symfony-security-access-definable-filters
- dev-docs/readme
This package is auto-updated.
Last update: 2024-08-30 01:44:53 UTC
README
安装
确保全局已安装 Composer,如 Composer 文档的《安装》章节中所述。
使用 Symfony Flex 的应用程序
打开命令行,进入您的项目目录并执行
$ composer require halloverden/symfony-security-bundle
不使用 Symfony Flex 的应用程序
步骤 1: 下载 Bundle
打开命令行,进入您的项目目录并执行以下命令以下载此 Bundle 的最新稳定版本
$ composer require alloverden/symfony-security-bundle
步骤 2: 启用 Bundle
然后,通过将其添加到项目中 config/bundles.php
文件中已注册的 Bundle 列表中来启用 Bundle
// config/bundles.php return [ // ... HalloVerden\SecurityBundle\HalloVerdenSecurityBundle::class => ['all' => true], ];
身份验证器
可以使用身份验证器通过您的 OpenID 提供者的访问令牌进行身份验证。
- 创建一个实现
HalloVerden\Security\Interfaces\OauthUserProviderServiceInterface
的类 - 启用身份验证器和您希望用作服务的类
HalloVerden\Security\Interfaces\OauthUserProviderServiceInterface: class: App\Services\OauthUserProviderService # Your class HalloVerden\Security\AccessTokenAuthenticator: ~ HalloVerden\Security\ClientCredentialsAccessTokenAuthenticator: ~
- 将身份验证器添加到您的安全配置中。
guard: authenticators: - HalloVerden\Security\AccessTokenAuthenticator entry_point: HalloVerden\Security\AccessTokenAuthenticator
- 您还需要实现
HalloVerden\Security\Interfaces\OauthTokenProviderServiceInterface
和HalloVerden\Security\Interfaces\OauthJwkSetProviderServiceInterface
的服务(使用 halloverden/symfony-oidc-client-bundle 时可以跳过)
访问定义
为需要访问定义的每个实体创建一个 yaml 文件。示例
App\Entity\Requests\TestRequest: canCreate: roles: - 'ROLE_ADMIN' scopes: - 'system.create:test-request' canRead: roles: - 'ROLE_ADMIN' scopes: - 'system.read:test-request' canUpdate: roles: - 'ROLE_ADMIN' scopes: - 'system.update:test-request' canDelete: roles: - 'ROLE_ADMIN' scopes: - 'system.delete:test-request' properties: test: canRead: roles: - 'ROLE_USER' scopes: - 'system.read:test-request.test' canWrite: roles: - 'ROLE_USER' scopes: - 'system.write:test-request.test' yoo: canWrite: roles: - 'ROLE_USER'
将此访问定义的路径添加到配置文件中
hallo_verden_security: access_definitions: dirs: App\Entity\Requests: '%kernel.project_dir%/config/access_definitions/requests'
您可以使用 AccessDefinableExclusionStrategy
跳过序列化和反序列化时用户没有访问权限的属性。
还有一个 HasAccess
验证约束,可以检查用户是否可以访问特定属性。
在其他情况下,您可以使用 AccessDefinitionService
来检查特定类/属性的访问权限。