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

2022-08-30 19:39:01

我目前正在试验新的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()]);
    }
...

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

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

我想我可能需要为此编写自己的中间件。对如何处理问题有任何建议吗?


答案 1

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

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

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

这使用立面。所有可用立面的列表位于Authconfig/app.phpaliases:

如果我的控制器中需要身份验证,该怎么办?注入问题中显示的类似实例可以工作,但您不需要这样做。您可以使用外观,就像我们在模板中所做的那样:GuardAuth

    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或单独完美地协同工作:


答案 2

如果要进行自己的自定义身份验证,则需要保留 Laravel 5 中的用户模型以及所有依赖项。之后,您将能够在控制器中登录您的用户。别忘了放 (使用身份验证;)在控制器的命名空间之后。


推荐