Laravel 5 新身份验证:获取当前用户以及如何实现角色


Laravel 5 new auth: Get current user and how to implement roles?

我目前正在试验新的Laravel 5,并让身份验证工作(注册/登录(。

为了在我的控制器中获取经过身份验证的用户,我目前将Guard注入控制器操作:

use App'Http'Controllers'Controller;
use Illuminate'Contracts'Auth'Guard;
class ClientController extends Controller {
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index(Guard $auth)
    {
        return view('client.index', ['user' => $auth->user()]);
    }
...

第一个问题:这是推荐的方法吗?

第二个问题:我将如何实现某种角色/权限?像client.editclient.add、...幼虫5在这里提供了某种便利吗?如何为路由/控制器操作设置必要的角色/权限?

我在想我可能需要为此编写自己的中间件。关于如何处理这个问题的任何建议?

在 Laravel 5 上花费更多时间后,我可以回答我自己的问题:

注射Guard是推荐的方法吗?否:如果您需要访问视图中的Auth,则可以像这样执行此操作:

@if( Auth::check() )
    Current user: {{ Auth::user()->name }}
@endif

这将使用Auth立面。所有可用外墙的列表在aliases:config/app.php

如果我的控制器需要Auth怎么办?注入问题中显示的Guard实例有效,但您不需要这样做。您可以像在模板中一样使用Auth外观:

    public function index()
    {
        if('Auth::check() && 'Auth::user()->name === 'Don') {
            // Do something
        }
        return view('client.index');
    }

请注意,由于 L5 使用命名空间,因此在外观名称之前需要'

我想使用L5中的新身份验证机制获得权限/角色:我使用新的中间件实现了一个轻量级权限模块,它被称为Laraguard。在Github上查看一下,让我知道你的想法:https://github.com/cgrossde/Laraguard

更新:为了完整起见,我想再提两个项目。它们提供了在数据库中保存角色和权限所需的一切,并与Laraguard完美地协同工作或单独工作:

  • https://github.com/caffeinated/shinobi
  • https://github.com/romanbican/roles

如果你想做自己的自定义身份验证,你需要保留Laravel 5的用户模型和所有的依赖关系。之后,您将能够在控制器中登录您的用户。不要忘记放(使用身份验证;(在控制器的命名空间之后。