3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以簡(jiǎn)單地通過從 URL 中刪除用戶 ID 來保護(hù)路由,而是通過身份驗(yàn)證會(huì)話獲取它。
因此,您的路線簽名應(yīng)該來自:
Route::get('/profile/{user}', 'UserController@edit')->name('profile');
對(duì)此:
Route::get('/profile', 'UserController@edit')->name('profile');
因此,在您的控制器中,而不是從請(qǐng)求中獲取用戶 ID:
public function edit(Request $request)
{
$user = User::findOrFail($request->id);
// ...
}
您可以User通過Auth外觀登錄:
use Illuminate\Support\Facades\Auth;
public function edit(Request $request)
{
$user = Auth::user();
// ...
}
或者只是auth()幫手:
public function edit(Request $request)
{
$user = auth()->user();
// ...
}
這樣,您就可以屏蔽 URL 以避免惡意用戶做他/她不應(yīng)該做的事情。

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
// Controller
public function index()
{
if (Auth::check() && Auth::user()->role->id == 2) {
return view('author.setting.settings');
} else {
Toastr::info('you are not authorized to access', 'Info');
return redirect()->route('login');
}
}
// Route
Route::group(['as'=>'user.','prefix'=>'user','namespace'=>'Author','middleware'=>['auth','user']], function (){
Route::get('/setting','SettingsController@index')->name('settings.settings');
});

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
你需要做這樣的事情。
你的路線
Route::get('/profile', [
'uses' => 'UserController@profile',
'middleware' => 'profilecheck'
]);
你的中間件
class CheckUserMiddleware
{
public function handle($request, Closure $next)
{
if(!auth()->user()) {
return redirect()->route('login');
}
return $next($request);
}
}
- 3 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報(bào)