Php 基于角色空间/Laravel权限的Laravel重定向
我正在使用此软件包,我想做的是: 超级管理员,管理员,成员有相同的登录名,登录后重定向到不同的路由。 超级管理员和管理员具有相同的重定向。所以我把这个密码Php 基于角色空间/Laravel权限的Laravel重定向,php,laravel,roles,laravel-5.7,Php,Laravel,Roles,Laravel 5.7,我正在使用此软件包,我想做的是: 超级管理员,管理员,成员有相同的登录名,登录后重定向到不同的路由。 超级管理员和管理员具有相同的重定向。所以我把这个密码 //app\Http\Controllers\Auth\LoginController.php protected function authenticated(Request $request, $user) { if ( $user->hasAnyRole(['super-admin', 'admin']) ) {// do
//app\Http\Controllers\Auth\LoginController.php
protected function authenticated(Request $request, $user)
{
if ( $user->hasAnyRole(['super-admin', 'admin']) ) {// do your margic here
return redirect()->route('admin.dashboard');
}
return redirect('/home');
}
这就是我的路线
//routes/web.php
Auth::routes();
Route::group(['middleware' => ['role:member']], function () {
Route::get('/', 'HomeController@index')->name('home');
});
Route::group(['middleware' => ['role:super-admin|admin'], 'prefix' => 'admin'], function () {
Route::get('/', 'Admin\HomeController@dashboard')->name('admin.dashboard');
});
登录后,我想做的是当超级管理员/管理员访问site.com/*
时,它应该重定向到site.com/admin/
,因为他没有授权,因为他不是会员,当会员访问site.com/admin/*
时,他重定向到site.com/
,因为他不是管理员/超级管理员,其他人在未经身份验证时将进入登录页面
它是这样表现的,,
它应该根据他们的角色主页进行重定向,而不是显示403错误。嗯,没有涉及重定向逻辑。它只是检查它是否具有正确的权限,如果用户没有权限,则抛出未经授权的异常
您需要编写自己的自定义中间件,在其中检查用户是否具有适当的角色,并重定向到适当的url。一个非常简单的例子是这样的(在管理员的情况下)
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class CheckIfAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if ( $user->hasAnyRole(['super-admin', 'admin']) ) {
return $next($request);
}
return redirect('/');
}
}