sf4/api-security

为 Symfony 4 设计的简单安全包

v1.0.7 2019-04-08 18:57 UTC

This package is not auto-updated.

Last update: 2024-10-01 21:20:44 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

结构

如果以下任何一项适用于您的项目,则目录结构应遵循行业最佳实践,并命名为以下。

bin/        
config/
src/
tests/
vendor/

安装

通过 Composer

$ composer require sf4/api-security

用法

config/bundles.php

<?php

return [
    # ...
    Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true]
];

config/services.yaml

services:
    # ...
    
    Sf4\ApiSecurity\Command\UserRightCreator:
        class: Sf4\ApiSecurity\Command\UserRightCreator
        tags:
            - { name: 'console.command', command: 'api-security:create-user-rights' }
        arguments:
            $requestHandler: '@Sf4\Api\RequestHandler\RequestHandlerInterface'
    
    Sf4\Api\Repository\RepositoryFactory:
        class: Sf4\Api\Repository\RepositoryFactory
        arguments:
            $entityManager: '@Doctrine\ORM\EntityManagerInterface'
            $entities:
#                user: Sf4\ApiUser\Entity\User
#                user_detail: Sf4\ApiUser\Entity\UserDetail
                user: Sf4\ApiSecurity\Entity\User
                user_detail: Sf4\ApiSecurity\Entity\UserDetail
                user_role: Sf4\ApiSecurity\Entity\UserRole
                user_right: Sf4\ApiSecurity\Entity\UserRight
                user_role_right: Sf4\ApiSecurity\Entity\UserRoleRight
    # ...
    Sf4\ApiSecurity\EventSubscriber\RequestSubscriber: ~
    Sf4\ApiSecurity\Security\Authenticator\TokenAuthenticator:
            class: Sf4\ApiSecurity\Security\Authenticator\TokenAuthenticator
            arguments:
                -   '@Doctrine\ORM\EntityManagerInterface'

config/packages/doctrine.yaml

doctrine:
    # ...
    orm:
        # ...
        mappings:
            # ...
#            Sf4\ApiUser:
#                is_bundle: false
#                type: annotation
#                dir: '%kernel.project_dir%/vendor/sf4/api-user/src/Entity'
#                prefix: 'Sf4\ApiUser\Entity'
#                alias: Sf4\ApiUser
            Sf4\ApiSecurity:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/vendor/sf4/api-security/src/Entity'
                prefix: 'Sf4\ApiSecurity\Entity'
                alias: Sf4\ApiSecurity

config/packages/security.yaml

security:
    encoders:
        Sf4\ApiSecurity\Entity\User:
            algorithm: argon2i
    providers:
        app_user_provider:
            entity:
                class: Sf4\ApiSecurity\Entity\User
                property: email
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true
            stateless:  true
            logout: ~
            guard:
                authenticators:
                    - Sf4\ApiSecurity\Security\Authenticator\TokenAuthenticator
    access_control:
        - { path: ^/security, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/site, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/user, roles: ROLE_USER }

config/packages/translation.yaml

framework:
    # ...
    translator:
        # ...
        paths:
            # ...
            - '%kernel.project_dir%/vendor/sf4/api-security/src/translations'

创建超级管理员

bin/console api-security:create-super-admin

创建用户权限

bin/console api-security:create-user-rights

测试

$ composer test

贡献

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 siim.liimand@gmail.com 通知,而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 获取更多信息。