【问题标题】:Laravel 8 : cant change laravel auth redirectionLaravel 8:无法更改 laravel 身份验证重定向
【发布时间】:2020-09-30 04:21:17
【问题描述】:

我已经安装了 adminlte https://github.com/jeroennoten/Laravel-AdminLTE/wiki ,并且之前在登录 '/beranda' 后设置了默认 url。但是,当我尝试将其恢复为“/ home”的原始 url 时,它不起作用。网址仍然指向“beranda”。怎么改?

我试过这个:

composer dump-autoload
php artisan cache:clear
php artisan config:cache
php artisan route:cache

config/adminlte.php

'use_route_url' => false,

'dashboard_url' => 'home',

'logout_url' => 'logout',

'login_url' => 'login',

'register_url' => 'register',

'password_reset_url' => 'password/reset',

'password_email_url' => 'password/email',

'profile_url' => false,

Auth/LoginController.php

use AuthenticatesUsers;

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = RouteServiceProvider::HOME;

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

Providers/RouteServiceProvider.php

public const HOME = '/home';

Providers/AuthServiceProvider.php

public function boot()
{
    $this->registerPolicies();

    Gate::define('isAdmin', function ($user) {
        return $user->role == 'admin';
    });
    Gate::define('isMember', function ($user) {
        return $user->role == 'member';
    });
}

路线

Auth::routes();
Route::get('/', [HomeController::class, 'index']);
Route::get('/beranda', [BerandaController::class, 'index'])
    ->middleware('can:isMember')
    ->name('beranda');
Route::get('/booking', [BookingController::class, 'index'])
    ->middleware('can:isMember')
    ->name('booking');
Route::get('/invoice', [InvoiceController::class, 'index'])
    ->middleware('can:isMember')
    ->name('invoice');
Route::get('/trip', [TripController::class, 'index'])
    ->middleware('can:isMember')
    ->name('trip');
Route::get('/setting', [SettingController::class, 'index']);
Route::get('/home', function () {
    return view('home');
})->name('home')->middleware('auth');
Route::get('/admin/beranda', [AdminBerandaController::class, 'index'])
    ->middleware('can:isAdmin')
    ->name('adminBeranda');

【问题讨论】:

  • 尝试更改受保护的 $redirectTo = RouteServiceProvider::HOME;到 >>> 受保护 $redirectTo = /home;在 Auth/LoginController.php
  • 还是不行。继续指向/beranda
  • 也许尝试运行php artisan cache:clear
  • 另外,可能不是因果关系,但您的许多路线似乎使用->name('member'),我不认为这是有效的,每条路线的名称应该是唯一的。
  • @WesleySmith 感谢您的纠正,我已经改进了我的问题。但仍然无法正常工作。总是指向/beranda。我想重新安装它,但我需要在不重新安装 auth 和 adminlte 的情况下找到最佳解决方案

标签: php laravel


【解决方案1】:

对不起,这是我的错误,在导航栏菜单登录时,我输入链接 '/beranda' 而不是 'login'

所以当我点击链接时,beranda 将检查登录,登录后事件管理员的角色将重定向到 beranda。

【讨论】:

    猜你喜欢
    • 2019-09-10
    • 2021-11-27
    • 2021-07-20
    • 2016-04-03
    • 2016-04-02
    • 2016-05-13
    • 2017-12-24
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多