簡體   English   中英

Laravel 5 new auth:獲取當前用戶以及如何實現角色?

[英]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.editclient.add ,...幼蟲5在這里提供某種便利嗎? 如何設置路由/控制器操作的必要角色/權限?

我認為我可能需要為此編寫自己的中間件。 關於如何解決該問題有什么建議嗎?

在Laravel 5上花了更多時間后,我可以回答我自己的問題:

推薦使用Guard注射嗎? 否:如果您需要在視圖中訪問Auth ,則可以這樣進行操作:

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

這將使用Auth門面。 所有可用的外牆的列表位於config/app.phpaliases:

如果我需要在控制器中使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM