2017-10-21 82 views
0

我想实现在laravel 5.4多权威性,并在这样做了, 我已经执行警卫和供应商在auth.php警卫,Laravel多权威性5.4

<?php 

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Auth; 

class FleetLoginController extends Controller { 
    public function __construct() { 
     $this->middleware('guest:company'); 
    } 

    public function showLogInForm() { 
     return view('fleet.fleetLogin'); 
    } 

    public function login(Request $request) { 
     $this->validate($request, [ 
      'email' => 'required|email', 
      'password' => 'required' 

     ]); 
     if (Auth::guard('company')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) { 
      $request->session()->regenerate(); 
      return $this->authenticated($request, $this->guard()->user()) 
       ?: redirect()->intended($this->redirectPath()); 

     } else { 
      return redirect()->back()->withInput($request->only('email', 'remember')); 
     } 
    } 

    public function logout(Request $request) { 
     $this->guard('company')->logout(); 

     $request->session()->invalidate(); 

     return redirect('/'); 
    } 

    public function logcheck() { 
     if (Auth::check()) { 
      dd('yes logged in'); 
     } 
     else 
     { 
      dd('No user logged in'); 
     } 
    } 

    protected function authenticated(Request $request, $user) { 
     $this->logcheck(); 
    } 

    protected function guard() { 
     return Auth::guard('company'); 
    } 
} 

我有提供者和守卫,问题是当我调用函数logcheck() 它转储“没有用户登录”。谁能帮我?我需要

Auth::User()->id; 
+0

不知道守护 Auth::guard('company')->check(),如果你想用同样的方法,但是这是一个后我做了关于不同的用户角色和中间件:https://stackoverflow.com/questions/46501968/auth-and-user-management-in-laravel-rest-api/46503658#46503658可能是有用的。 –

+0

我正在使用两个表格。另一个基本上是一个公司 –

回答

0

获得的登录用户的ID好像你需要使用发送姓名到logcheck()

+0

非常感谢你!这解决了它! –

+0

现在我该如何使用它作为中间件? –

+1

只需在'config/auth.php'中创建'公司'默认警卫或将其添加到'app/Http/Middlewares/RedirectIfAuthenticated.php'中即可。 – astratyandmitry