limit0/modlr-auth-bundle

为使用modlr的项目实现核心认证服务

v0.2 2017-05-16 17:31 UTC

This package is not auto-updated.

Last update: 2024-09-14 20:09:43 UTC


README

为使用as3io/modlr的项目实现核心认证服务

需求

  • 您必须使用或复制提供的core-user 模型
    • 您可以使用(可选)提供的core-account 模型

安装

通过composer安装此包

composer require limit0/modlr-auth-bundle

在您的AppKernel.php中包含此包

    public function registerBundles()
    {
        $bundles = [
            // ...
            new Limit0\ModlrAuthBundle\Limit0ModlrAuthBundle(),
            // ...

配置

路由

您需要导入此包的路由。为了防止潜在的冲突问题,请确保在您的应用程序加载API之前加载它

limit0_modlr_auth:
    resource: "@Limit0ModlrAuthBundle/Resources/config/routing.yml"
    
as3_modlr_bundle:
    resource: "@As3ModlrBundle/Resources/config/routing.yml"
    defaults:
        _format: json
# ...

安全性

更新security.yml配置(提供模板

添加core_user提供者

    providers:
        core_user:
            id: modlr_auth_bundle.security.user_provider.core_user
    # ...

添加用户编码器

    encoders:
        Limit0\Bundle\ModlrAuthBundle\Security\User\CoreUser:
            algorithm: bcrypt
            cost: 13
    # ...

提供了两个认证器,一个是无状态的API认证器,它使用JWT

    firewalls:
        api:
            context: core
            pattern: ^/api\/rest
            provider: core_user
            guard:
                authenticators:
                    - modlr_auth_bundle.security.authenticator.api

另一个使用有状态的Symfony框架令牌

    firewalls:
        manage:
            context: core
            anonymous: ~
            provider: core_user
            guard:
                authenticators:
                    - modlr_auth_bundle.security.authenticator.core_user
            remember_me:
                secret: "%secret%"
                lifetime: 63072000
                name: __modlr-auth
                always_remember_me: true
            logout:
                path: /api/auth/user/destroy
                invalidate_session: false
                success_handler: modlr_auth_bundle.security.logout_success_handler

一旦您配置了您的防火墙,配置您的受控路径。

锁定modlr API(将api/rest替换为您的配置的modlr rest api前缀)

    access_control:
        - { path: ^/api/auth, roles: [ IS_AUTHENTICATED_ANONYMOUSLY ] }
        - { path: ^/api/rest, roles: [ ROLE_ADMIN\USER ] }

或者也可以锁定整个应用程序

    access_control:

    access_control:
        - { path: ^/api/auth, roles: [ IS_AUTHENTICATED_ANONYMOUSLY ] }
        - { path: ^/, roles: [ ROLE_ADMIN\USER ] }