适用于多个用户的Laravel身份验证 [英] Laravel Authentication for multiple users
本文介绍了适用于多个用户的Laravel身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的应用程序中有4种类型的用户,详细信息存储在4个不同的表中,那么如何实现Laravel的身份验证?
I have 4 types of users in my application and details are stored in 4 different tables, so how can I implement Laravel's Authentication?
Route::post('/adlogin', 'mainController@adminlogin');
Route::get('/sellerlogin', function () {
return view('seller.pages.login');
});
Route::post('/sellerlog_in', 'mainController@sellerlogin');
推荐答案
将此用作您的控制器
Use this as your controller
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
//Use Dependencies
use Auth;
class AdminLoginController extends Controller
{
此处使用的中间件是
admin
,您必须在config / auth.php
public function __construct()
{
$this->middleware('guest:admin', ['except'=>'logout']);
}
为管理员登录创建视图
Create a view for your admin Login
public function showLoginForm()
{
return view('auth.admin_login');
}
public function login(Request $request)
{
//Validate the Form Data
$this->validate($request, [
'email'=>'required|email',
'password'=>'required|min:5'
]);
//Attempt to log the Admin In
$email= $request->email;
$password= $request->password;
$remember= $request->remember;
像这样成功登录后,我要重定向
到admin.dashboard
//If Successful redirect to intended location
if (Auth::guard('admin')->attempt(['email' => $email, 'password' => $password], $remember)) {
return redirect()->intended(route('admin.dashboard'));
}
//If Unsuccessful redirect back to login form with form data
return redirect()->back()->withInput($request->only('email', 'remember'));
}
/**
* Log the Admin out of the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function logout()
{
Auth::guard('admin')->logout();
return redirect()->route('admin.login');
}
}
注销后重定向回登录页面
After logout redirect back to login page
在 config / app.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
],
],
为<$ c $在此处创建的c> admin 和 admin-api
为您的用户类型创建
As admin
and admin-api
created here create for your user types
添加提供者
Add providers
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
在
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 10,
],
],
在 http / middleware / redirectIfAuthenticated.php
将此添加到您的句柄
函数
//Check for admin login guard
switch ($guard) {
case 'admin':
if (Auth::guard($guard)->check()) {
return redirect()->route('admin.dashboard');
}
break;
default:
if (Auth::guard($guard)->check()) {
return redirect('/dashboard');
}
break;
}
您可以为用户类型添加更多大小写。
You can add more cases for your user types.
- 创建
LoginController
适用于所有用户类型,或使用您的逻辑进行登录。 - 为auth.php中的每种用户类型添加您的
卫兵
- 将案件添加到
RedirectIfAuthenticated
- Create
LoginController
for all user types or use your logic to log them in. - Add your
guards
for every user type in auth.php - Add your cases to
RedirectIfAuthenticated
这篇关于适用于多个用户的Laravel身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文