编程语言
首页 > 编程语言> > php-Laravel 5.1-如何在AuthController中设置loginPath?

php-Laravel 5.1-如何在AuthController中设置loginPath?

作者:互联网

我想将默认的Laravel路由从/ auth / login更改为/ login并通过注册进行可视化.

这些是我的路线:

Route::get('login',     ['as' => 'getLogin', 'uses' => 'Auth\AuthController@getLogin']);
Route::post('login',    ['as' => 'postLogin', 'uses' => 'Auth\AuthController@postLogin']);
Route::get('logout',    ['as' => 'getLogout', 'uses' => 'Auth\AuthController@getLogout']);
Route::get('register',  ['as' => 'getRegister', 'uses' => 'Auth\AuthController@getRegister']);
Route::post('register', ['as' => 'postRegister', 'uses' => 'Auth\AuthController@postRegister']);

现在出现了问题,当用户尝试访问受保护的区域时,将启动Authentication类,将未经身份验证的用户重定向回/ auth / login而不是/ login.

我可以通过在AuthController中设置$loginPath来解决问题,如下所示:

protected $loginPath = '/login';

但是,似乎$loginPath仅用于失败的登录尝试,而不是失败的身份验证尝试,如AuthenticateUsers类中所述.

好吧,我设法从此更改了Authenticate类中的redirectURL:

return redirect()->guest('auth/login');

对此:

return redirect()->guest('login');

哪个解决了问题,但我想在我的AuthController中为此设置一个属性,如下所示:

protected $redirectIfMiddlewareBlocks = '/login';

为此,我检查Authenticate类是否存在属性,该属性是我之前在AuthController中设置的:

return redirect()->guest(property_exists($this, 'redirectIfMiddlewareBlocks') ? $this->redirectIfMiddlewareBlocks : '/shouldnotbeused');

但是我得到了/ shouldnotbeused url,而不是AuthController中的redirectIfMiddlewareBlocks属性设置的URL.

如何在AuthController中正确设置登录路由的路径?

解决方法:

我认为问题在于您正在检查错误的类上的属性.您正在检查它是否存在于$this上,它是在AuthController上设置时Authenticate的一个实例

因此,您应该将支票更改为:

property_exists(AuthController::class, 'redirectIfMiddlewareBlocks')

同样,您不能从另一个类访问受保护的属性.如果要这样做,则必须将其公开.最后,我将其设置为静态,以便您无需实例化AuthController对象即可访问它.因此,最终的解决方案是:

class AuthController {
    public static $redirectIfMiddlewareBlocks = '/here';
}

在您的身份验证中间件中:

use App\Http\Controllers\AuthController;

class Authenticate {
    public function handle()
    {
        return redirect()->guest(property_exists(AuthController::class, 'redirectIfMiddlewareBlocks') ? AuthController::$redirectIfMiddlewareBlocks : '/shouldnotbeused');
    }
}

标签:laravel,laravel-5,authentication,php
来源: https://codeday.me/bug/20191119/2037139.html