flosch/proxy-bundle

认证symfony3插件:在PHP代理之上提供认证层。

安装: 26

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

语言:JavaScript

类型:symfony-bundle

1.1.2 2017-01-15 23:18 UTC

This package is not auto-updated.

Last update: 2024-09-29 02:13:41 UTC


README

认证symfony插件:在PHP代理之上提供认证层。

本插件提供了一个用户模型和YamlUserProvider,根据yml文件来认证用户。它还提供了一个用于添加用户(带加密密码)的Symfony命令。

用户登录后,它通过Guzzle PHP库(目前为v6版本)提供PHP代理。

为什么?

如果你想要代理一个HTTP应用,并且需要一个比HTTP标准(如HTTP_BASIC)更强的认证层,那么这个插件很有用。

安全性

请注意,只有当你可以为你的域名提供HTTPS证书时,这个插件在安全方面才会有效。

要求

  • Symfony 3.0及以上

安装

要安装此插件,请运行以下命令,并将从Packagist获取最新版本。

composer require flosch/proxy-bundle

使用

在AppKernel.php中加载必需的插件

// app/AppKernel.php
public function registerBundles()
{
    $bundles = [
        // [...]
        new Flosch\Bundle\ProxyBundle\FloschProxyBundle()
    ];
}

设置配置

# app/config/config.yml
twig:
    # [...]
    globals:
        proxy_title: Your Proxy title

# FloschProxyBundle uses assetic (for the login page)
# However, you can override the templates and manage it yourself in any other way if you prefer.
assetic:
    # [...]
    bundles: [ FloschProxyBundle ]

flosch_proxy:
    base_url: http://127.0.0.1:8888/ # The URL you will actually proxy
    users_provider_file_path: "%kernel.root_dir%/../var/users.yml"
样式

对于登录页面,FloschProxyBundle使用名为Font Awesome的图标字体。如果你希望保留登录页面的图标,则需要将字体源文件复制到你的项目的web/fonts文件夹。如果你不希望使用它,你可以通过扩展此插件来覆盖登录页面模板,具体方法在本文档后面解释。

设置路由

app/config/routing.yml或任何其他路由文件

flosch_proxy:
    resource: "@FloschProxyBundle/Resources/config/routing.yml"
    prefix:   /

设置安全

# app/config/security.yml
security:
    encoders:
        # The FloschProxyBundle User model class, you can choose your favorite encoder
        Flosch\Bundle\ProxyBundle\Model\User:
            algorithm:            bcrypt
            cost: 17

    providers:
        # [...]
        proxy_users:
            id: flosch_proxy.provider.yaml_user_provider

    firewalls:
        # [...]
        flosch_proxy_app_login:
            pattern:  ^/login$
            security: false

        flosch_proxy_app:
            pattern:  ^/
            provider: proxy_users
            form_login:
                check_path: flosch_proxy_login_check_page
                login_path: flosch_proxy_login_page
                always_use_default_target_path: true
                default_target_path: /
            logout:
                path:   flosch_proxy_logout_page
                target: /

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, roles: ROLE_USER }

认证和用户管理

到这里!

此插件包含一个名为YamlUserProvider的服务,它从yaml文件中提供用户。要添加访问权限,添加一个包含此用户信息的新yaml数组

# /path/of/your/users.yml
username:
    salt: # the salt used to encrypt the password, depending of the encoder you chosse, this might be optional (ex: bcrypt).
    password: # the encrypted password

你还可以使用两个命令从控制台管理用户

创建新用户

php bin/console flosch-proxy:users:create [username] [password] [--all]

用户名和密码参数都是可选的,如果你没有提供,命令将提示输入。--override(或-o)选项允许替换现有用户的密码(如果用户不存在,则创建该用户)。

删除现有用户

php bin/console flosch-proxy:users:remove [username] [--all]

用户名参数是可选的,如果你没有提供,命令将提示输入。--all选项允许从文件中删除所有现有用户。

扩展插件

插件本身提供了安全层,包括登录和登出路由;以及一个默认的登录页面,在通过Guzzle客户端代理路由之前。

作为symfony插件,你可以扩展它,以利用Symfony继承,然后重写资源和/或控制器

Controller/
    ProxyController.php --> Manage PHP proxy once authenticated
    Security/
        AuthenticationController.php --> Manage authentication
Resources/
    views/
        layout.html.twig --> Base template with HTML doctype
        Security/
            login.html.twig --> Login page template

你只需要设置自己的插件作为FloschProxyBundle的子插件

// src/YourBundleName/YourBundleName.php
namespace YourBundleName;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class YourBundleName extends Bundle
{
    public function getParent()
    {
        return 'FloschProxyBundle';
    }
}

作者

许可协议

本插件在MIT许可证下发布