webundle/puzzle-connect

管理用户安全

安装: 15

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.0 2018-09-25 06:48 UTC

This package is auto-updated.

Last update: 2024-09-26 01:06:08 UTC


README

=========================================

Puzzle 扩展包,用于管理基本的和 OAuth 认证以及用户账户

步骤 1: 下载 Bundle

打开命令行控制台,进入您的项目目录,并执行以下命令以下载此 Bundle 的最新稳定版本

composer require webundle/puzzle-connect

步骤 2: 启用 Bundle

然后,通过将其添加到项目 app/AppKernel.php 文件中注册的 Bundle 列表中来启用该 Bundle

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new Puzzle\ConnectBundle\PuzzleConnectBundle(),
        );

        // ...
    }

    // ...
}

步骤 3: 注册路由

在应用程序中加载 Bundle 的路由定义(通常在 app/config/routing.yml 文件中)

app/config/routing.yml

puzzle_connect:
        resource: "@PuzzleConnectBundle/Resources/config/routing.yml"

步骤 4: 配置 Puzzle OAuth 选项

然后,通过管理模块界面将管理 Bundle 启用,通过将其添加到项目 app/config/config.yml 文件中注册的 Bundle 列表中

puzzle_connect:
    client_id:             client_id_value
    client_secret:         client_secret_value
    base_authorize_uri:    'http://account.puzzle.ci/oauth/v2/authorize'
    base_token_uri:        'http://account.puzzle.ci/oauth/v2/token'
    default_redirect_uri:  oauth
    default_scope:         'user'
    host_apis:             'http://apis.puzzle.ci'

步骤 5: 安全性

然后,在项目 app/config/security.yml 文件中配置安全性

security:
    encoders:
        ...
        Puzzle\ConnectBundle\Entity\User: 
            algorithm:                        sha512
            encode_as_base64:                 false
            iterations:                       1
            
    role_hierarchy:
        ROLE_ADMIN:                           ROLE_USER
        ROLE_SUPER_ADMIN:                     [ROLE_ALLOWED_TO_SWITCH, ROLE_ADMIN]

    providers:
        ...
        connect_provider:
            id:                               puzzle_connect.provider.user
             
    firewalls:
        
        main:
            host:                             '%host_account%'
            pattern:                          '^/'
            entry_point:                     puzzle_connect.security.authentication.form_entry_point
            entry_point:                      null
            logout_on_user_change:            true
            form_login:
                provider:                     connect_provider
                check_path:                   login_check
                login_path:                   login
                success_handler:              puzzle_connect.handler.authentication_success
                username_parameter:           _username
                password_parameter:           _password
                csrf_parameter:               _csrf_token
                csrf_token_id:                authenticate
                post_only:                    true
                remember_me:                  true
                require_previous_session:     true
            switch_user:
                provider:                     connect_provider
                parameter:                    _swu
                role:                         ROLE_ALLOWED_TO_SWITCH
            remember_me:
                secret:                       '%secret%'
                path:                         /
                domain:                       '%host_admin%'
                secure:                       false
                httponly:                     true
                lifetime:                     31536000
                remember_me_parameter:        _remember_me
            logout:
                path:                         logout
                target:                       login
                invalidate_session:           true
                delete_cookies:
                    a:                        { path: /, domain: ~ }
            anonymous:                        true

    access_control:
        ...
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/oauth, roles: IS_AUTHENTICATED_ANONYMOUSLY, host: '%host_admin%' }
        - { path: ^/, roles: ROLE_ADMIN, host: '%host_admin%' }