fsb/proxy-bundle

此包已被弃用且不再维护。作者建议使用 flosch/proxy-bundle 包。

认证的 symfony 扩展包:在 PHP 代理之上提供认证层。

v0.1.1 2015-07-03 15:28 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:49:05 UTC


README

认证的 symfony 扩展包:在 PHP 代理之上提供认证层。

此扩展包提供了一个用户模型和用户提供者,用于根据 yml 文件对用户进行认证。它还提供了一个 Symfony 命令,用于添加具有加密密码的用户。

一旦用户登录,它将利用 8p/Guzzle-BundleGuzzle PHP 库(当前为 v6),提供一个 PHP 代理。

为什么?

如果您想代理一个具有比 HTTP 标准(如 HTTP_BASIC)更强大认证层的 HTTP 应用程序,此扩展包很有用。

要求

  • Symfony 2.7 或更高版本
  • 8p/GuzzleBundle(由 composer 包含)

安装

要安装此扩展包,运行以下命令,您将通过 Packagist 获取最新版本。

composer require fsb/proxy-bundle

使用

在 AppKernel.php 中加载所需的扩展包

// app/AppKernel.php
public function registerBundles()
{
  $bundles = array(
    // [...]
    new EightPoints\Bundle\GuzzleBundle\GuzzleBundle()
    new Fsb\Bundle\ProxyBundle\FsbProxyBundle()
  );
}

设置配置

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

# FsbProxyBundle uses assetic, and for the login page,
# Both CSS, SASS and JS resources.
# However, you can override the templates and manage it yourself.
assetic:
  # [...]
  bundles: [ FsbProxyBundle ]
  filters:
    # [...]
    scss:
      # Requires ruby-sass
      apply_to: "\.scss$"
    # OPTIONALLY, you can install uglifyjs and uglifycss to minify the assets
    uglifyjs2:
      bin: "path/of/your/node_modules/.bin/uglifyjs"
    uglifycss:
      bin: "path/of/your/node_modules/.bin/uglifycss"

guzzle:
  base_url: https://:8888/
  
fsb_proxy:
  users_provider_file_path: "path/of/users.yml"

设置路由

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

fsb_proxy:
  resource: "@FsbProxyBundle/Resources/config/routing.yml"
  prefix:   /

设置安全

# app/config/security.yml
security:
  encoders:
    # The FsbProxyBundle User model class, you can choose your favorite encoder
    Fsb\Bundle\ProxyBundle\Model\User:
      algorithm:            pbkdf2
      hash_algorithm:       sha512
      iterations:           1000000
      encode_as_base64:     true

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

  firewalls:
    # [...]
    fsb_proxy_app_login:
      pattern:  ^/login$
      security: false
  
    fsb_proxy_app:
      pattern:  ^/
      provider: proxy_users
      form_login:
        check_path: fsb_proxy_login_check_page
        login_path: fsb_proxy_login_page
        always_use_default_target_path: true
        default_target_path: /
      logout:
        path:   fsb_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
  password: # the encrypted password

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

创建新用户

php app/console fsb-proxy:users:create [username] [password] [--all]

用户名和密码参数都是可选的,如果您不提供,则命令将要求输入。使用 --override(或 ````-o````)选项可以替换现有用户的密码(如果用户不存在,则将创建用户)。

删除现有用户

php app/console fsb-proxy:users:remove [username] [--all]

用户名参数是可选的,如果您不提供,则命令将要求输入。使用 --all 选项可以删除文件中的所有现有用户。

扩展扩展包

此扩展包本身提供了安全层,包括登录和注销路由;以及一个默认登录页面,在通过 Guzzle 客户端“代理”路由之前。

作为 symfony 扩展包,您可以扩展它,以利用 Symfony 继承,然后覆盖资源和/或控制器

Controller/
  RestController.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

您需要做的就是设置自己的扩展包,将其作为 FsbProxyBundle 的子包。

// src/You/YourBundleName/YouYourBundleName.php
namespace You\YourBundleName;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class YouYourBundleName extends Bundle
{
  public function getParent()
  {
    return 'FsbProxyBundle';
  }
}

作者

许可

本软件包是在 MIT 许可证下发布的