[英]Laravel 5 new auth: Get current user and how to implement roles?
我目前正在嘗試使用新的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
,...幼蟲5在這里提供某種便利嗎? 如何設置路由/控制器操作的必要角色/權限?
我認為我可能需要為此編寫自己的中間件。 關於如何解決該問題有什么建議嗎?
在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完美配合或單獨使用:
如果要進行自己的自定義身份驗證,則需要保留具有所有依賴關系的Laravel 5中的User模型。 之后,您將可以在控制器中登錄用戶。 不要忘記將(使用Auth;)放在控制器的名稱空間之后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.