首页 > 解决方案 > 我在 Laravel 5 中的身份验证会话有问题

问题描述

我有 2 页(管理员和客户),但我遇到了问题。因此,如果我进入管理页面,我无法进入客户页面。所以管理员和客户页面同时我无法进入。我想要两个同时工作。如果客户注销。管理员正在外出系统怎么办?我在底部写代码。

配置/auth.php

return [
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
        'customer' => [
            'driver' => 'session',
            'provider' => 'customers',
        ],
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'customers' => [
            'driver' => 'eloquent',
            'model' => App\Customer::class,
        ],
    ],

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],

];

应用程序/客户

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Customer extends Authenticatable
{
    use Notifiable;
    protected $guard = "customer";

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password','adres',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

应用程序/用户.php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

应用程序/http/controller/auth/LoginController.php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/admin';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function logout(Request $request) {
        Auth::logout();
        return redirect('/login');
      }
}

app/http/controller/customer/auth/LoginController.php

namespace App\Http\Controllers\Customer\Auth;

use App\Customer;
use App\Http\Controllers\Controller;
use App\Setting;
use App\User;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

class LoginController extends Controller
{

    use AuthenticatesUsers;

    protected $redirectTo = '/customer';

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

    public function showLoginForm(){
        $setting = Setting::where('id',1)->get();
        return view('customer.auth.login',['setting'=>$setting]);
    }

    public function register(){
        $setting = Setting::where('id',1)->get();
        return view('customer.auth.register',['setting'=>$setting]);
    }
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
            'adres' => ['string', 'min:8', 'confirmed'],
        ]);
    }
    public function store(Request $request){
        $all = $request->except('_token');
        $rules = array('email' => 'unique:customers,email');
        $validator = Validator::make($request->all(), $rules);

        if ($validator->fails()) {
            $setting = Setting::where('id',1)->get();
            $errorugur = 'That email address is already registered. You sure you don\'t have an account? :/';
            return view('customer.auth.error',['errorugur'=>$errorugur,'setting'=>$setting]);
        }
        else {
            $data = [
                'name' => $all['name'],
                'email' => $all['email'],
                'adres' => $all['adres'],
                'password' => md5($all['password'])];
            $create = Customer::create($data);
            if ($create) {
                return redirect()->back()->with('status','Added Successfully :)');
            }
            else {
                return redirect()->back()->with('status','Sorry Couldnt Add :/');
            }
        }

    }

    public function logout(Request $request)
    {
        $this->guard()->logout();
        $request->session()->invalidate();
        return redirect()->route('customer.login');
    }

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

}

路线/web.php

Route::get('/logout', '\App\Http\Controllers\Auth\LoginController@logout'); // Admin logout

/* Customer Web */

Route::namespace("Customer")->prefix('customer')->group(function(){
    Route::get('/', 'HomeController@index')->name('customer.home');
    Route::get('/sale', 'HomeController@sale')->name('customer.sale');
    Route::get('/information', 'HomeController@information')->name('customer.information');
    Route::post('/update', 'HomeController@update')->name('customer.update');
    Route::namespace('Auth')->group(function(){
        Route::get('/register', 'LoginController@register')->name('customer.register');
        Route::post('/store', 'LoginController@store')->name('customer.store');
        Route::get('/login', 'LoginController@showLoginForm')->name('customer.login');
        Route::post('/login', 'LoginController@login');
        Route::get('/logout', 'LoginController@logout')->name('customer.logout');
    });

});

我知道,你也因为我而困惑。我开始新的laravel。如果你需要信息,你应该给我写信。谢谢大家

标签: phplaravel

解决方案


推荐阅读