pkj / minibase-plugin-auth
身份验证插件为您的应用程序实现身份验证。
Requires
- php: >=5.4.0
- doctrine/migrations: dev-master
- facebook/php-sdk: 3.*
- minibase/minibase: dev-master
- pkj/minibase-plugin-doctrine: dev-master
- pkj/minibase-plugin-mailer: dev-master
- pkj/minibase-plugin-twig: dev-master
This package is auto-updated.
Last update: 2024-08-29 04:11:48 UTC
README
Auth是一个大型且可定制的Minibase框架插件。适用于PHP 5.4+。如果您需要应用程序的身份验证,无需再寻找其他插件。此插件可定制,例如视图定制。
支持的身份验证机制
- 常规电子邮件/密码身份验证。
- Facebook Oauth登录。
- API身份验证(用于您的RESTful API)
插件要求
此插件需要安装某些插件。最重要的插件是twig,twig插件覆盖了minibase的默认PHP视图处理。
- Doctrine插件:ORM
- Twig插件:模板引擎。
- Csrf插件:用于安全
安装
此插件必须在Doctrine/Twig插件之前初始化。
与JSON的示例集成
在您的app.json文件中添加插件如下。
"plugins": [ { "name": "Pkj/Minibase/Plugin/AuthPlugin/AuthPlugin", "config": { "providers": { "facebook": { "appId": "APP_ID", "secret": "FACEBOOK_SECRET_KEY" } }, "api": { "ensure_token": true, "expire_timeout": "+100 days" } } }, { "name": "Pkj/Minibase/Plugin/TwigPlugin/TwigPlugin", "config": { } }, { "name":"Pkj/Minibase/Plugin/Csrf/CsrfPlugin" }, { "name": "Pkj/Minibase/Plugin/DoctrinePlugin/DoctrinePlugin", "config": { "metadata": "annotation", "entityDirs": ["${APP_DIR}/models/"], "proxyDir": "${APP_DIR}/cache/proxies", "connection": { "driver": "pdo_sqlite", "path": "${APP_DIR}/cache/db.sqlite" } } } ]
更新您的数据库模式。
此插件引入了一些新的数据库表(用于用户)。
注意,如果您已经在应用程序中使用了doctrine模型,请使用orm:schema-tool:update --dump-sql并导入到您当前数据库中。
php cli.php orm:schema-tool:create
路由
/login
在AuthPlugin/login.html中使用的视图,您可以在视图文件夹中覆盖此视图以添加自己的登录HTML代码。
/register
允许用户注册。
/user/settings
用户设置的控制系统。用户可以从该URL更改其密码。
保护控制器方法。
此插件引入了新的注释,您可以将它们放在控制器或控制器方法上。
use Pkj\Minibase\Plugin\AuthPlugin\Annotation as Restrict;
@Restrict\Authenticated
用户必须经过身份验证,否则将显示AuthPlugin/must_authenticate.html视图。
@Restrict\NotAuthenticated
用户不得经过身份验证,如果此操作失败,将显示AuthPlugin/must_not_authenticate.html视图。
@Restrict\UserGroups(groups={"admin"})
您可以将任何控制器或方法限制为仅对某些用户组。
注释参数
例如,redirect参数(例如,@Restrict\Authenticate(redirect="MyController.heyloginnowplease")将重定向用户而不是显示AuthPlugin/must_authenticate.html。
API身份验证
此插件获取一些其他路由,例如/api/login。这些调用期望一个原始JSON请求。如果提交的JSON正确,则/api/login入口点将返回一些数据,即{"username": "myuser", "password": "mypass"}。您将获得一个authToken,此密钥可以在需要时用于进一步的身份验证。您只需将?auth_token=KEY添加到URL,您将根据分配给入口点的注释获得访问权限。
事件
auth:register:before (Pkj\Minibase\Plugin\AuthPlugin\Models\UserAccount $user)
在用户被持久化到数据库之前触发。用于对用户名和您自己的字段进行自定义验证。如果您想将用户保留在数据库中,则抛出\Exception。
auth:register:after (Pkj\Minibase\Plugin\AuthPlugin\Models\UserAccount $user)
在注册时触发(不是提供者注册)。允许您在用户注册时将自定义字段添加到数据库。