2016-06-10 110 views
0

我有一個Laravel應用程序與不同的角色管理,買方和賣方。在路由文件中,我有一個前綴爲admin和users的路由,當前綴是user時,我也檢查角色。買家與賣家有不同的權限。Laravel爲不同角色的不同路線

Route::group(['prefix' => 'user'], function() { 
    Route::group(['middleware' => ['auth', 'roles', 'user'], 'roles' => ['buyer']], function() { 
     // 
    }); 

    Route::group(['middleware' => ['auth', 'roles', 'user', 'owner:bids'], 'roles' => ['seller']], function() { 
     // 
    }); 

}); 

這給了我一些奇怪的副作用。例如,對於買方(用戶1)和賣方(用戶2),我不能擁有兩條相同的路線。我希望有

http://localhost:8000/user/1/dashboard 

,而是我需要做的

http://localhost:8000/user/1/dashboard/buyer 
http://localhost:8000/user/2/dashboard/seller 

所以我開始覺得我只是需要,而不是由買方和賣方,因爲我管理和用戶(區分在上面做),並檢查控制器文件中的角色,而不是在路由中。

與管理員和用戶一起使用哪種用戶可以擁有多個角色的更好方式是什麼?

回答

0

買方和賣方如何走相同的路線並擁有相同的ID? http://localhost:8000/user/1/dashboard

這只是一個用戶,可以做不同的動作。


我只是添加一個字段給用戶大門像is_admin,並使用一些大門來檢查它。同樣爲您的其他類似的問題

https://laravel.com/docs/5.1/authorization#via-the-gate-facade

+0

如果我不使用航線角色中間件,那麼這兩個將是用戶/儀表板。如果我使用角色(買家和賣家如上面的路線文件中所示),那麼我不能同時選擇路線用戶/儀表板。因此,我必須稱他們/用戶/儀表板/買方和/用戶/儀表板/賣方。 – wiwa1978

+0

這沒有意義。你是否正在調用在路由上傳遞{id}的角色?您只能使用一條路徑並檢查控制器上的所有內容 – Cristo

+0

您的意思是不使用中間件,而是檢查控制器上的所有內容。我知道這是一種可能性,但我不明白爲什麼不使用中間件來檢查角色。中間件的優點是我每次檢查都在路由文件中。除了這個小問題,它很好用。但是我聽到更多的人說使用中間件通常不是一個好的選擇。這只是我不相信,因爲我不明白爲什麼不。 – wiwa1978