Laravel 5 new auth:获取当前用户以及如何实现角色?
Posted
技术标签:
【中文标题】Laravel 5 new auth:获取当前用户以及如何实现角色?【英文标题】:Laravel 5 new auth: Get current user and how to implement roles? 【发布时间】:2015-02-18 17:10:30 【问题描述】:我目前正在试验新的 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 在这里提供某种便利吗?
如何为路由/控制器操作设置必要的角色/权限?
我在想我可能需要为此编写自己的中间件。关于如何解决这个问题的任何建议?
【问题讨论】:
【参考方案1】:在 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 中的新身份验证机制获得权限/角色: 我使用新的中间件实现了一个轻量级权限模块,它被称为 Laraguard。在 Github 上查看并告诉我你的想法:https://github.com/cgrossde/Laraguard
更新:为了完整起见,我想再提两个项目。它们提供了您在数据库中保存角色和权限所需的一切,并与 Laraguard 完美地协同工作或单独工作:
https://github.com/caffeinated/shinobi https://github.com/romanbican/roles【讨论】:
您是否为用户角色库创建了过滤路由,我被github.com/romanbican/roles卡住了 没有门面怎么办?【参考方案2】:如果您想进行自己的自定义身份验证,则需要保留 Laravel 5 中的 User 模型以及所有依赖项。之后,您将能够在控制器中登录您的用户。不要忘记将(使用 Auth;)放在控制器的命名空间之后。
【讨论】:
以上是关于Laravel 5 new auth:获取当前用户以及如何实现角色?的主要内容,如果未能解决你的问题,请参考以下文章
在 Auth::attempt() Laravel 5.1 中禁用重定向
NON Auth::User ID 的 Laravel 回显
异常页面(布局)上的 Laravel 5.2 Auth::check()