Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel4教程-身份验证_Laravel_Laravel 4_Cartalyst Sentry - Fatal编程技术网

Laravel4教程-身份验证

Laravel4教程-身份验证,laravel,laravel-4,cartalyst-sentry,Laravel,Laravel 4,Cartalyst Sentry,我环顾四周,找到了一些关于使用Sentry或Confide和trust进行身份验证的教程。这些都很好,但对我来说有点模糊,我是Laravel初学者,这是我的第一个框架 是否有人知道使用用户角色实现用户身份验证的教程或建议 这就是我想要做的。 -这是一个内部工作网站。作者可以登录并提交文章的地方。 -管理员可以浏览这些文章。 -这些文章不是公开的,所以没有人可以看。 -作者无法看到彼此的文章,但管理员可以访问所有内容 我只是在寻找有关用户角色以及如何实现它们的教程 编辑这就是我最后要做的 按照指定

我环顾四周,找到了一些关于使用
Sentry
Confide
trust
进行身份验证的教程。这些都很好,但对我来说有点模糊,我是
Laravel
初学者,这是我的第一个框架

是否有人知道使用用户角色实现用户身份验证的教程或建议

这就是我想要做的。 -这是一个内部工作网站。作者可以登录并提交文章的地方。 -管理员可以浏览这些文章。 -这些文章不是公开的,所以没有人可以看。 -作者无法看到彼此的文章,但管理员可以访问所有内容

我只是在寻找有关用户角色以及如何实现它们的教程

编辑这就是我最后要做的

按照指定的方式安装哨兵后

我有用户、组和其他一些表(我只需要使用用户和组)

这是我最初用于创建用户和组的播种器。它可以变得更有效,但对于任何想开始的人来说,这都是可行的

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);
}
}

在添加初始用户之后,我使用一个表单来添加新用户,所以在我的控制器中,我有类似的东西。同样,这只是为了学习/测试框架,最初的实现非常不同。但出于测试目的,这应该是可行的

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);
}
假设您有一个表单提交给controller@function,你可以吃这样的东西

$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);
其余部分可在Sentry文档中找到:


请随意编辑此问题,使其更具信息性或添加新的示例。

好吧,这篇文章并不完全是关于此问题的,但它涵盖了我们在Sentry2中对auth和角色使用的大部分内容。所以,基本上你必须

通过执行

curl -sS https://getcomposer.org/installer | php
composer create-project laravel/laravel
将其放在可执行文件夹中,重命名它

sudo mv composer.phar /bin/composer
设置可执行位

sudo chmod +x /bin/composer
通过执行

curl -sS https://getcomposer.org/installer | php
composer create-project laravel/laravel
设置哨兵2

composer require cartalyst/sentry:2.0.*
那么你只需要使用哨兵:


为每个组创建用户组和权限:

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
}
检查用户是否为超级管理员(只有此组具有“系统”访问权限)

从特定用户获取所有组

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.';
}

购物清单问题(“请为我做研究,并发布链接列表”)在这里不合适。这里有一个例子可以解释为什么会这样。谷歌和必应都专注于搜索内容和返回结果链接。投票结束是没有建设性的。祝你好运。我已经做了研究,这就是为什么我提到了信任和委托。我有一个工作拉威尔博客安装使用他们。我只是问是否有人知道其他可能更接近我需要的东西。如果你没有什么建设性的东西要补充,何必麻烦呢。你应该阅读这里关于对他人的行为以及网站总体运作方式的和页面。这里有一些指导原则是有原因的,用户在这里做了大部分的调整。我很有礼貌地解释了我对结束投票的看法(并且礼貌到不否决投票)。我也希望你有礼貌。如果您不喜欢这里的指导原则,请随时在上发布请求,要求更改。在做出更改之前,请遵守当前有效的规则,无论是保持话题还是对其他用户礼貌。谢谢。我想我没说什么冒犯性的话。对不起,老兄,我没有时间陪你,别管我。这很好。我只是需要一个开始的例子。我可以从这里找到答案。谢谢。添加了一些安装Composer、Laravel和Sentry的步骤。“为每个组创建您的用户组和权限:”-最好放在哪里?因为您每次都需要一个新组。您可以创建一个命令。或者,您可以创建控制器+视图,以通过表单创建它们。我以前是通过Seeds来实现的,但现在我认为这是一个错误的位置。我们现在可以在PHP中使用[]数组快捷方式……whhhaaat!我的心被吹了。。。。。。。