欢迎各位兄弟 发布技术文章
这里的技术是共享的
官网:https://cartalyst.com/manual/sentry
github:https://github.com/cartalyst/sentry
安装
Sentry可以方便的使用composer进行独立安装或集成到Laravel、CodeIgniter等框架。这里说下集成Sentry到Laravel4框架,其他方式的安装也都大同小异。
在composer.json配置文件中添加依赖:{"require": {"cartalyst/sentry": "2.1.*",},"minimum-stability": "stable"},然后执行composer update进行下载。
添加自动加载配置[app/config/app.php] ,将'Cartalyst\Sentry\SentryServiceProvider'添加到provider配置项中
添加别名配置[app/config/app.php],将'Sentry'=>'Cartalyst\Sentry\Facades\Laravel\Sentry'添加到aliases配置项中
添加数据库,php artisan migrate --package=cartalyst/sentry
最后注入配置 php artisan config:publish cartalyst/sentry
权限概述
介绍sentry的权限如何工作及用户权限的继承行为。
组权限有2种状态:0:禁止 1:允许
用户权限有3种状态 : -1:禁止 1:允许 0:继承
权限继承:
如果用户没有分配权限或用户分配权限为0,那么用户将会从组中继承。
如果用户分配的权限是1或-1,那么用户的权限会覆盖组权限。
如:
Moderator组
{
"name" : "moderator",
"permissions" : {
"user.create" : 0,
"user.delete" : 0,
"user.view" : 1,
"user.update" : 1
}
}
用户
{
"id" : 2,
"username" : "Rocky",
"groups" : ["moderator"],
"permissions" : {
"user.update" : 0
}
}
那么这里用户Rocky就拥有user.update和user.view的权限,而没有user.create和user.delete的权限。
sentry代码实例
简单演示如何使用sentry进行用户管理及权限验证
创建用户:
$user = Sentry::createUser(array(
'email' => 'john.doe@example.com',
'password' => 'test',
'activated' => true,
));
// Find the group using the group id
$adminGroup = Sentry::findGroupById(1);
// Assign the group to the user
$user->addGroup($adminGroup);
验证一个用户:
$credentials = array(
'email' => 'john.doe@example.com',
'password' => 'test',
);
// Try to authenticate the user
$user = Sentry::authenticate($credentials, false);
修改一个组
$group = Sentry::findGroupById(1);
// Update the group details
$group->name = 'Users';
$group->permissions = array(
'admin' => 1,
'users' => 1,
);
// Update the group
if ($group->save())
{
// Group information was updated
}
else
{
// Group information was not updated
}
检查用户是否有权限
$user = Sentry::findUserByID(1);
// Check if the user has the 'admin' permission. Also,
// multiple permissions may be used by passing an array
if ($user->hasAccess('admin'))
{
// User has access to the given permission
}
else
{
// User does not have access to the given permission
}
还有很多方法,这里就不一一举例了,大家可以参考官方文档。