flosch / proxy-bundle
认证symfony3插件:在PHP代理之上提供认证层。
Requires
- guzzlehttp/guzzle: ~6.0
- symfony/assetic-bundle: ^2.8
- symfony/polyfill: >=1.0
- symfony/symfony: ~3.0
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'; } }
作者
- Florent Schildknecht (作品集)
许可协议
本插件在MIT许可证下发布