我正在尝试做一些我认为很简单的事情,我一路上遇到了一些麻烦。我的代码包括我的routes.php
和我的verify.php
,用于验证用户身份。基本上,我希望根据用户是否经过身份验证来更改到主页的路由。
首先,我有控制器(verify.php
)
<?php
namespace App\Http\Controllers;
use App\Email;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Google_Client;
use Auth;
use App\User;
class verify extends Controller
{
public function verifyIdToken(Request $request)
{
$user = User::where('name', 'Molly')->first();
Auth::login($user);
return;
}
}
当用户首次满足某些要登录的条件时,会在ajax请求中触发此脚本,但这是客户端逻辑,此时并不重要。这个想法是,一旦脚本被命中,用户就会登录。
添加更多细节:
我routes.php
的标题是:
use Auth;
use Illuminate\Http\Request;
我有什么遗失的吗?
我的routes.php逻辑现在是这样的:
if (Auth::guest()) {
Route::get('/', function () {
return view('welcome');
});
} else {
Route::get('/', function () {
return view('mainview');
});
}
但它仍然无效,即使在verify.php
我已在以下确认中添加:
if (Auth::check($user))
{
return view('aviewII')->with(['verify' => json_encode("Yes!")]);
}
我将在ajax请求中返回。
即使这告诉我我已通过身份验证,但我仍然无法获得经过身份验证的视图。我接下来应该尝试什么?
编辑:我的routes.php
完整:
<?php
/*
|--------------------------------------------------------------------------
| Routes File
|--------------------------------------------------------------------------
|
| Here is where you will register all of the routes in an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
use App\punsmodel;
use Illuminate\Http\Request;
if (Auth::guest()) {
Route::get('/', function () {
return view('welcome');
});
} else {
Route::group(['middleware' => 'auth'], function () {
Route::get('/', function () {
return view('mainview');
});
Route::get('mainview', function () {
return view('mainviewMolly');
});
});
}
Route::get('puns', function () {
return view('puns');
});
Route::post('google' , [
'as' => 'verify.index',
'uses' => 'verify@verifyIdToken'
]);
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| This route group applies the "web" middleware group to every route
| it contains. The "web" middleware group is defined in your HTTP
| kernel and includes session state, CSRF protection, and more.
|
*/
Route::group(['middleware' => ['web']], function () {
//
});
答案 0 :(得分:2)
我只是在 routes.php :
中有条件if (Auth::guest()) {
Route::get('/', function () {
return view('home.logged_out');
});
} else {
Route::get('/', function () {
return view('home.logged_in');
});
}
另外,还有一些造型技巧:
class verify
应为class Verify
。use
语句,使扫描更容易;)<强>更新强>
如果要检查用户的身份验证状态,则需要确保这些路由在里面应用了中间件的组:
Route::group(['middleware' => 'web'], function () {
if (Auth::guest()) {
return view('home.logged_out');
} else {
return view('home.logged_in');
}
});
答案 1 :(得分:0)
好的,如果你在L5.2上,这有点不同。检查this article。
根据我的要求,您必须在users表中添加api_token
字段。然后,当您想要检查用户是否已登录时,您可以执行此操作Auth::guard('api')->check()
。
当您注册用户时,您必须在响应中返回api_token,并将此字段添加到任何Ajax请求中。
希望有所帮助;)