Laravel 5 new auth:获取当前用户以及如何实现角色?

时间:2014-12-19 18:09:24

标签: php authentication laravel laravel-5

我目前正在尝试使用新的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这样的东西...... Larval 5在这里提供了一些便利吗? 如何为路由/控制器操作设置必要的角色/权限?

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

2 个答案:

答案 0 :(得分:51)

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

以推荐的方式注入Guard否:如果您需要在视图中访问Auth,则可以这样做:

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

这使用Auth外观。所有可用外墙的列表位于config/app.php下的aliases:

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

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

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

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

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

答案 1 :(得分:0)

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