laravel - 在 laravel 中设置特定的中间件
问题描述
我正在开发一个 Laravel 应用程序,在这个应用程序中,每个用户都可以有多个角色,这个应用程序中有 12 个角色,一个用户一次可以拥有至少一个或多个角色,我想要的是当用户想要时登录我想向他/她展示他/她可以登录的可用角色,他/她应该选择他/她的角色登录,我为每个角色都有一个中间件,可以为他/她设置,问题是我在登录时无法为用户设置特定的中间件。
中间件之一:
<?php
namespace App\Http\Middleware;
use Closure;
class CTDMiddleware {
public function handle($request, Closure $next) {
if (Auth::check()) {
$role = Auth::user()->user_role[0]->role->role;
if (strtolower($role) == \App\Classes\User_Groups::$ctd) {
return $next($request);
}
}
return redirect()->route('/logout');
}
}
在这里,我只是检查了用户的第一个角色,而她可能还有更多角色。登录控制器:
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller {
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function login(Request $request) {
$validator = Validator::make(
array(
'email' => $request->email,
'password' => $request->password
), array(
'email' => 'required | email',
'password' => 'required',
)
);
if ($validator->fails()) {
return redirect('admin/login')->withErrors($validator)->withInput();
} else {
$adminInfo = array("email" => $request->email, "password" => $request->password);
if (auth()->attempt($adminInfo)) {
return redirect('/home');
} else {
return redirect('/login')->with('errors', new \PhpParser\Error('Not Found', array('email', 'password')));
}
}
}
public function logout() {
auth()->logout();
return view('auth/login');
}
}
但是我还没有实现角色选择选项,但是在登录控制器中,我想为特定的中间件调用尝试()。
解决方案
您可以尝试使用这样的特定警卫:
Auth::guard('admin')->attempt($adminInfo, $request->get('remember'))
推荐阅读
- python - I want to map my tkinter buttons to keys on the numberpad, What am I doing wrong please?
- eclipse - Eclipse 中的 AWS Toolkit 可以与 localstack 一起使用吗?
- c# - C# gRPC 文件流式传输,原始文件小于流式传输的文件
- azure - Azure 逻辑应用,队列中没有内容
- python - Django order_by 两个字段,第一个字段最后为空
- c++ - 在 GCC-7 中使用功能测试宏
- javascript - React:渲染大图像和放大
- javascript - Java Script Function 对于特定的正则表达式运行良好,但在另一个正则表达式中无法正常运行
- c# - 使用查找集合的 IValueConverter
- c# - Azure 函数 httpclient ObjectDisposedException 无法访问已处置的对象 SslStream