dongqiu3254 2018-10-18 22:26
浏览 39

如何在laravel中的多个身份验证中登录后编辑重定向?

Can you help me in multi auth of laravel? Now i use one table (users) with two guard web and admin, but the same model related (User)

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->boolean('isAdmin')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

This Web (Routes.php)

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/login', 'Auth\LoginController@Loginuser')->name('login');
Route::post('/login', 'Auth\LoginController@userLogin')->name('login'); 

Route::group(['middleware' => ['auth','admin']], function () {
Route::get('/admin', ['as' => 'admin.home', 'uses' =>  
'AdminController@index']);
});
Route::get('/admin/login', ['as' => 'admin.login', 'uses' =>   
'Auth\AdminLoginController@Loginadmin']);
Route::post('/admin/login', ['as' => 'admin.login', 'uses' =>   
'Auth\AdminLoginController@adminLogin']);

I will use 2 different links:

  1. /login for user and admins, when isAdmin==1 and when isAdmin==0.
  2. /admin/login for admins only .

This code in admin middleware:

if (Auth::user()){
        if(Auth::user()->isAdmin  == "1"){
            return $next($request); 
        }else{
            Auth::logout();
            return redirect()->route('admin.login');
       }
   }
    return redirect()->route('admin.login');

and in Auth\AdminLoginController.php this code

protected $redirectTo = '/admin';

public function __construct()
{
    $this->middleware('guest:admin')->except('logout');
}

 public function Loginadmin()
{
    return view('auth.login');
}

public function adminLogin(Request $request)
{
    $this->validate($request, [
        'email'   => 'required|email',
        'password' => 'required|min:6'
    ]);
       if (Auth::guard('admin')->Where("isAdmin" , '1')->attempt(['email' => 
$request->email, 'password' => $request->password], $request->get('remember'))) {

        return redirect()->intended('/admin');
    }
    return back()->withInput($request->only('email', 'remember'));

Now i have a problem.

When request /admin/login normal users enter but I do not want them to enter, I want just admin to enter in this route.

Also, another problem happens when an admin enters the page redirects to /home and not to /admin as it should be.

What is the problem?

I apologize for the lengthening Best Regards

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器