我目前正在试验新的Laravel 5,并让身份验证工作(注册/登录(。
为了在我的控制器中获取经过身份验证的用户,我目前将Guard
注入控制器操作:
use AppHttpControllersController;
use IlluminateContractsAuthGuard;
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.edit
、client.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的用户模型和所有的依赖关系。之后,您将能够在控制器中登录您的用户。不要忘记放(使用身份验证;(在控制器的命名空间之后。