fsb / proxy-bundle
Requires
- eightpoints/guzzle-bundle: ~3.0
- symfony/symfony: ~2.7
This package is not auto-updated.
Last update: 2022-02-01 12:49:05 UTC
README
认证的 symfony 扩展包:在 PHP 代理之上提供认证层。
此扩展包提供了一个用户模型和用户提供者,用于根据 yml 文件对用户进行认证。它还提供了一个 Symfony 命令,用于添加具有加密密码的用户。
一旦用户登录,它将利用 8p/Guzzle-Bundle 和 Guzzle 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'; } }
作者
- Florent Schildknecht (作品集)
许可
本软件包是在 MIT 许可证下发布的