我目前正在尝试使用新的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.edit
,client.add
这样的东西...... Larval 5在这里提供了一些便利吗?
如何为路由/控制器操作设置必要的角色/权限?
我在想我可能需要为此编写自己的中间件。关于如何处理问题的任何建议?
答案 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;)。