我是Laravel的新手,请原谅我的无知。我正在学习初学者教程,并被内置的身份验证系统卡住了。。。
我创建了一个新的应用程序,并遵循了关于设置身份验证的文档,我搜索了堆栈溢出并解决了一个问题(我必须将身份验证路由放在中间件组中),但现在无论我做什么,它都重定向到根"/"路径。。。即使我手动转到auth/loogue,然后再转到auth/login。。。有人能帮忙吗?
在Laravel 5.2中运行标准后
> php artisan make:auth
假设我们希望在转到/admin
路由时确保用户身份验证。
在routes.php
中会有一个类似这样的条目:
Route::group(['middleware' => ['web', 'auth']], function() {
// Only authenticated users may enter...
Route::get('/admin', [
'as' => 'admin', 'uses' => 'AdminController@index'
]);
});
并且在AuthController.php
中必须添加一个附加方法:
class AuthController extends Controller
{
...
public function authenticated()
{
return redirect()->intended();
}
}
因此,每当未经身份验证的用户尝试访问/admin
URL时,它都会被重定向到某个/login
页面,如果身份验证成功,他将能够访问/admin
页面。
在上面的代码中需要注意的几点:
- 需要
web
和auth
中间件组(没有web
的auth
将不支持会话,因此url.intended
没有保存在会话中,整个重定向机制也不起作用) - AuthController中的方法名称是
authenticated
,而不是Laravel文档中提到的authenticate
(在验证身份验证后调用)
我想我误解了,你的路线应该是这样的。
Route::get('auth/login', 'Auth'AuthController@getLogin');
Route::post('auth/login', 'Auth'AuthController@postLogin');
Route::get('auth/logout', 'Auth'AuthController@getLogout');
并且您至少应该在Auth文件夹中(在视图中)有login.blade.php模板。
如果你真的要重新开始,考虑删除这个问题,因为它对处于当前状态的任何人都没有真正的帮助。
在您的Auth控制器中尝试此操作
public function authenticated( $request, $user ) {
return redirect()->intended($this->redirectPath().'?success');
}