Authentication Laravel 4中特定于角色的登录

Authentication Laravel 4中特定于角色的登录,authentication,laravel,laravel-4,role,Authentication,Laravel,Laravel 4,Role,我正在成功登录系统,但是 我希望角色为“管理员”的用户只能进入所有路由,角色为“经理”的用户可以进入“主页”和“GetDocumentDetails”,否则其他登录用户将被限制在主页和来宾登录页面。 我的路由和筛选器文件如下所示: 路线: Route::post('/login', function() { $user = array( 'username' => Input::get('username'), 'password' => Input::ge

我正在成功登录系统,但是 我希望角色为“管理员”的用户只能进入所有路由,角色为“经理”的用户可以进入“主页”和“GetDocumentDetails”,否则其他登录用户将被限制在主页和来宾登录页面。 我的路由和筛选器文件如下所示:


路线:

Route::post('/login', function()
{
    $user = array(
    'username' => Input::get('username'),
    'password' => Input::get('password'));
    // verify user credentials  
    if (Auth::attempt($user,true))
    {   
        $role= Auth::user()->userrole;
        return Redirect::route('home');
    }
}
// Route for getting document details using get method
Route::get('GetDocumentDetailsById',array('as'=>'GetDocumentDetailsById','uses'=>'DocumentController@GetDocumentDetailsById'));

// Route for guest user 
Route::filter('guest', function()
{
    if (Auth::check()) 
    return Redirect::route('home')->with('flash_notice', 'You are already logged in!');
    // Redirect Log-in user to his home page
});

过滤器:

/* Filter to redirect guest user to login page */
Route::filter('auth', function()
{
    $role=Auth::user();
    if (Auth::guest()) return Redirect::guest('login');
});


Route::filter('auth.basic', function()
{
    return Auth::basic('username');
});

Route::filter('guest', function()
{
    if (Auth::check()) return Redirect::to('/');
});

我建议为此使用Zizaco的和包,因为它们大大简化了这项任务

安装两个软件包后,请按照这些页面上的教程进行操作,然后您可以仅通过定义路由权限筛选器或常规路由筛选器来限制对某些路由的访问。控制器动作中不需要任何附加逻辑

这些路由权限筛选器可以像这样轻松定义:

// Any route under admin is only accessible by users with role Admin.
// Redirect happens if user doesn't have this role.

Entrust::routeNeedsRole('admin*', 'Admin', Redirect::to('/'));
Route::filter('myFilter', function()
{
    if (!Entrust::can('get_document_details') )
    {
        return Redirect::to('/');
    }
});
基于权限的路由筛选器如下所示:

// Any route under admin is only accessible by users with role Admin.
// Redirect happens if user doesn't have this role.

Entrust::routeNeedsRole('admin*', 'Admin', Redirect::to('/'));
Route::filter('myFilter', function()
{
    if (!Entrust::can('get_document_details') )
    {
        return Redirect::to('/');
    }
});

然后,此筛选器可以应用于任何路由。有关更多示例和功能,请参阅文档。Trust功能非常广泛。

在给定的链接中,它的书面运行Composer update命令$Composer update如何以及在何处运行它??在命令提示符中,我写了这篇文章,但它显示“未识别程序”。如果您安装了Laravel4,您可能已经通过Composer完成了安装。转到您的Laravel根文件夹(其中包含一个名为
composer.json
)并运行命令“php path/to/composer.phar update”。当我在命令提示符下编写php artisan Trust:migration时,出现错误:找不到“Zizaco\Trust\TrustFacade”文件。我已经添加了config/app.phpTry
php/path/to/composer.phar dump autoload的providers和alias数组中的行。这将使Laravel“看到”新安装的类。我已经转储了自动加载的Sir,但仍然是相同的错误。我想问一下,在composer.json的'require'中包含文件名后,这些文件将自动下载,或者我需要手动下载。