适用于多个用户的Laravel身份验证 [英] Laravel Authentication for multiple users

查看:133
本文介绍了适用于多个用户的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆