我环顾四周,发现了一些关于使用Laravel 4
或Confide
和Entrust
进行身份验证的教程。这是好的,但对我有点模糊,我是Laravel
初学者,这是我的第一个框架。
是否有人知道任何使用用户角色实现用户身份验证的教程或建议。
这就是我想要做的。-这是一个内部工作网站。作者可以在那里注册并提交文章。-管理员可以翻阅那些文章。-这些文章不是公开的,所以没有人可以看。-作家不能互相看文章,但管理员可以查阅一切。
我只是在寻找关于用户角色的教程,以及如何实现它们。
编辑
这就是我最后要做的。
以@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);
}
}
在添加初始用户之后,我使用了一个表单来添加新用户,因此在我的控制器中有这样的内容。同样,这只是为了学习/测试框架,原来的实现是非常不同的。但是为了测试的目的,这应该是可行的。
假设您有一个提交给控制器@函数的表单,您可以拥有这样的内容,
$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);
Rest您可以在Sentry文档中找到:哨兵
请随意编辑这个问题,以使它更有信息或添加新的例子。
发布于 2013-06-19 20:00:44
好吧,这并不是一篇关于它的文章,但它涵盖了我们在Sentry2中使用的大部分关于auth和角色的内容。所以,基本上你必须
通过执行
curl -sS https://getcomposer.org/installer | php
把它放在一个可执行文件夹上,重命名它。
sudo mv composer.phar /bin/composer
设置可执行位
sudo chmod +x /bin/composer
通过执行
composer create-project laravel/laravel
安装Sentry 2
composer require cartalyst/sentry:2.0.*
那么你只需要使用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,
),
));
将组设置为特定用户,在本例中是将管理器设置为当前日志记录的用户。
Sentry::getUser()->addGroup( Sentry::getGroupProvider()->findByName('Author') );
检查用户是否可以发布和添加项目
if ( Sentry::getUser()->hasAnyAccess(['system','system.articles','system.articles.publish']) )
{
// will be able to publish something
}
检查用户是否是超级管理员(只有此组具有“系统”访问权限)
if ( Sentry::getUser()->hasAnyAccess(['system']) )
{
// will be able to do a thing
}
从特定用户获取所有组
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.';
}
https://stackoverflow.com/questions/17199698
复制相似问题