pkj / minibase-plugin-auth

身份验证插件为您的应用程序实现身份验证。

dev-master 2013-05-11 20:12 UTC

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/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)

在注册时触发(不是提供者注册)。允许您在用户注册时将自定义字段添加到数据库。