gpt4 book ai didi

Laravel Middleware -> 获取登录用户

转载 作者:行者123 更新时间:2023-12-01 03:34:50 28 4
gpt4 key购买 nike

我想编写自己的中间件来检查当前用户是否是某个组的成员。如果是,用户可以移动到路由,如果不是,用户将被重定向到不同的页面。

我的中间件正在工作,但我不知道如何获取当前用户 ID。我试过 Auth::user() 方法,但没有成功。

这是我的中间件:

namespace App\Http\Middleware;

use Closure;
use App\User;
use App\Usergroups;
use Illuminate\Http\Request;

class UserGroupMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next, $group = NULL)
{
$user_id = $request->user()->user_id;
$user = User::find($user_id);
$usergroup = Usergroups::find($user->benutzergruppe);

if($usergroup->slug == 'admin'){
return $next($request);
}
return redirect('/');
}
}

最佳答案

如果已解决,您可以访问当前经过身份验证的用户。这意味着您需要确保将组检查中间件放在 auth 之后。您的路由/路由组上的中间件:

Route::group(['middleware' => ['auth', 'in_group:group_name']], function () {
// Routes
});

然后,您可以检查这样的角色:
class UserGroupMiddleware
{
public function handle(Request $request, Closure $next, $group)
{
// Check user is in specified group here
if ($request->user()->memberOf($group)) {
return $next($request);
}

// Display a 403 Forbidden error
abort(403);
}
}

关于Laravel Middleware -> 获取登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750538/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com