我使用的是Laravel内置的auth系统,可以在新的Laravel项目中运行php artisan make:auth命令轻松找到。 注册时,我也想给予用户上传他们个人资料图片的能力。 因此,我在注册表格中添加了一个名为profile_picture的新字段。 我如何从后端接收文件? ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我的用户表上有一个用户角色列。
我已经检查了很多Laravel教程,但是它们都没有帮助我解决这个问题。
我发现了一些方法,例如替换整个Laravel的Login Controller
并用我们自己的替换Authenticate Users特性。 我想用最少的代码更改来解决我的问题。 可能吗?
如何在该Trait方法中以最少的代码更改实现它?
public function login(Request $request)
{
$this->validateLogin($request);
if (method_exists($this, 'hasTooManyLoginAttempts') &&
$this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
}
if ($this->attemptLogin($request)) {
return $this->sendLoginResponse($request);
}
$this->incrementLoginAttempts($request);
return $this->sendFailedLoginResponse($request);
}
您可以像在用户模型中添加isSuperAdmin函数一样简单。 登录后,只要需要检查就可以在用户上调用此函数。
在模型User.php中
public function isSuperAdmin()
{
return $this->user_role == 1;
}
然后,您还可以制作使用此功能的中间件。
php artisan make:middleware SuperAdmin
在此中间件的处理功能( app / http / middleware / SuperAdmin.php )中:
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::user()->isSuperAdmin()) {
return $next($request);
}
return redirect('some-route-for-unauthorized-users');
}
然后,在您的路由(可能是web.php)中,您可以使用此中间件来保护路由:
Route::group(['middleware' => ['auth', 'superadmin']], function () {
... put protected routes here ...
});
解
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct() {
$this->middleware('guest')->except('logout');
}
protected function credentials(Request $request)
{
$credentials = $request->only($this->username(), 'password');
$credentials['role'] = '1';
return $credentials;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.