我正在研究新的laravel项目。
我已经通过composer安装了laravel框架,然后我创建了一个测试目的的路径:
Route::get('/', function () {
return view('pages.home');
});
这很好用,我得到了理想的页面。现在为了解中间件我添加了这行代码:
Route::get('/', function () {
return view('pages.home');
})->middleware('auth');
现在它的投掷错误
Route [login] not defined.
我所知道的,它抛出了这个错误,因为我没有安装任何voyagers包,这就是为什么它没有找到'login'
路线。
但我的问题是如何将Route [login]
更改为我想要的页面Route [pages.notauth]
。
请帮助我。
答案 0 :(得分:1)
首先运行php artisan make:auth
以制作Laravel auth样板文件。然后在LoginController
中添加以下内容:
class LoginController extends Controller {
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function showLoginForm() {
return view("pages.notlogin");
}
}
答案 1 :(得分:1)
您收到消息Route [login] not defined.
并不是因为您没有安装Voyager软件包,而是因为您没有为一般认证创建或定义任何路由。
是的,如果您安装Voyager软件包,那么错误消息将会消失,因为软件包本身将创建必要的auth路由和控制器。
为了做到这一点,你必须在命令行中运行php artisan make:auth
。
在laravel 5.4中,所有中间件都已在
中注册app\Http\Kernel.php
在文件中,您会看到
protected $ routeMiddleware = [ 'auth'=> \照亮\验证\中间件\身份验证::类,
所有与身份验证相关的任务都由\Illuminate\Auth\Middleware\Authenticate
类处理。因此,如果您想要更改auth中间件的基本行为,那么您需要扩展此类。
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as BaseAuthenticator;
class Authenticate extends BaseAuthenticator
{
protected function authenticate(array $guards)
{
// TO DO: do your desired change
}
}
答案 2 :(得分:0)
尝试添加
Auth::routes();
在您的路径文件中摆脱该错误,Auth::routes()
只是一个帮助程序类,可帮助您生成用户身份验证所需的所有路由。
如果你想更改网址,请改为添加,然后根据需要进行更改:
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');