tin*_*ook 6 laravel laravel-4 cartalyst-sentry
我环顾四周,发现了一些关于使用or 和Laravel 4 身份验证的教程.哪个好,但对我来说有点模糊,我是初学者,这是我的第一个框架.SentryConfideEntrustLaravel
有没有人知道任何使用用户角色实现用户身份验证的教程或建议.
这是我想要做的. - 它是一个工作的内部网站.作家可以登录并提交文章. - 管理员可以查看这些文章. - 这些文章不公开,所以没有人可以查看它们. - 作家无法看到彼此的文章,但管理员可以访问所有内容.
我只是在寻找有关用户角色以及如何实现它们的教程.
按照@Antonio Carlos Ribeiro指定的方式安装Sentry之后.
我有用户,组和其他几个表(我只需要使用用户和组).
这是我最初用于创建用户和组的播种机.它可以提高效率,但对于任何想要开始使用的人来说都可以.
class SentrySeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
DB::table('groups')->delete();
DB::table('users_groups')->delete();
Sentry::getUserProvider()->create(array(
'email' => 'admin@admin.com',
'password' => "admin",
'first_name' => 'John',
'last_name' => 'McClane',
'activated' => 1,
));
Sentry::getUserProvider()->create(array(
'email' => 'user@user.com',
'password' => "user",
'first_name' => 'Saad',
'last_name' => 'Kabir',
'activated' => 1,
));
Sentry::getUserProvider()->create(array(
'email' => 'jack@user.com',
'password' => "user",
'first_name' => 'Jack',
'last_name' => 'Doe',
'activated' => 1,
));
Sentry::getUserProvider()->create(array(
'email' => 'jon@user.com',
'password' => "user",
'first_name' => 'Jon',
'last_name' => 'Doe',
'activated' => 1,
));
Sentry::getGroupProvider()->create(array(
'name' => 'Admin',
'permissions' => array('admin' => 1),
));
Sentry::getGroupProvider()->create(array(
'name' => 'Writer',
'permissions' => array('writer' => 1),
));
// Assign user permissions
$adminUser = Sentry::getUserProvider()->findByLogin('admin@admin.com');
$adminGroup = Sentry::getGroupProvider()->findByName('Admin');
$adminUser->addGroup($adminGroup);
$userUser = Sentry::getUserProvider()->findByLogin('user@user.com');
$userGroup = Sentry::getGroupProvider()->findByName('Writer');
$userUser->addGroup($userGroup);
$userUser = Sentry::getUserProvider()->findByLogin('jack@user.com');
$userGroup = Sentry::getGroupProvider()->findByName('Writer');
$userUser->addGroup($userGroup);
$userUser = Sentry::getUserProvider()->findByLogin('jon@user.com');
$userGroup = Sentry::getGroupProvider()->findByName('Writer');
$userUser->addGroup($userGroup);
}
Run Code Online (Sandbox Code Playgroud)
}
添加初始用户后,我使用表单添加新用户,所以在我的控制器中我有这样的东西.这仅仅是为了学习/测试框架,原始实现是非常不同的.但出于测试目的,这应该有效.
假设你有一个提交到控制器@函数的表单,你可以有这样的东西,
$user = Sentry::getUserProvider()->create(array(
'email' => Input::get('email'),
'password' => Input::get('password'),
'first_name' => Input::get('first_name'),
'last_name' => Input::get('last_name'),
'activated' => 1,
));
$writerGroup = Sentry::getGroupProvider()->findByName('writer');
$user->addGroup($writerGroup);
Run Code Online (Sandbox Code Playgroud)
您可以在Sentry文档中找到它: Sentry Docs
随意编辑此问题以使其更具信息性或添加新示例.
Ant*_*iro 14
好吧,这不是一篇关于它的文章,但它涵盖了我们在Sentry2中使用auth和角色的大部分内容.所以,基本上你必须这样做
通过执行安装composer
curl -sS https://getcomposer.org/installer | php
Run Code Online (Sandbox Code Playgroud)
将它放在可执行文件夹上,重命名
sudo mv composer.phar /bin/composer
Run Code Online (Sandbox Code Playgroud)
设置可执行位
sudo chmod +x /bin/composer
Run Code Online (Sandbox Code Playgroud)
通过执行安装laravel
composer create-project laravel/laravel
Run Code Online (Sandbox Code Playgroud)
安装Sentry 2
composer require cartalyst/sentry:2.0.*
Run Code Online (Sandbox Code Playgroud)
然后你只需要使用Sentry:
为每个组创建用户组和权限:
Sentry::getGroupProvider()->create(array(
'name' => 'Super Administrators',
'permissions' => array(
'system' => 1,
),
));
Sentry::getGroupProvider()->create(array(
'name' => 'Managers',
'permissions' => array(
'system.articles' => 1,
),
));
Sentry::getGroupProvider()->create(array(
'name' => 'Publishers',
'permissions' => array(
'system.articles.add' => 1,
'system.articles.edit' => 1,
'system.articles.delete' => 1,
'system.articles.publish' => 1,
),
));
Sentry::getGroupProvider()->create(array(
'name' => 'Authors',
'permissions' => array(
'system.articles.add' => 1,
'system.articles.edit' => 1,
'system.articles.delete' => 1,
),
));
Run Code Online (Sandbox Code Playgroud)
将组设置为特定用户,在这种情况下,它将Managers设置为当前登录用户
Sentry::getUser()->addGroup( Sentry::getGroupProvider()->findByName('Author') );
Run Code Online (Sandbox Code Playgroud)
检查用户是否可以发布和添加的文章
if ( Sentry::getUser()->hasAnyAccess(['system','system.articles','system.articles.publish']) )
{
// will be able to publish something
}
Run Code Online (Sandbox Code Playgroud)
检查用户是否是超级管理员(仅此组具有"系统"访问权限)
if ( Sentry::getUser()->hasAnyAccess(['system']) )
{
// will be able to do a thing
}
Run Code Online (Sandbox Code Playgroud)
获取特定用户的所有组
try
{
// Find the user using the user id
$user = Sentry::getUserProvider()->findById(1);
// Get the user groups
$groups = $user->getGroups();
}
catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
{
echo 'User was not found.';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9180 次 |
| 最近记录: |