【发布时间】:2016-06-28 04:35:04
【问题描述】:
当我使用错误的凭据登录时,我得到了正确的响应。 当我使用正确的凭据登录时,登录页面会重新加载 302 请求 但它永远不会重定向到统计页面。 当我调试它时,我发现代码转到了中间件文件夹中的这个 authinticate.php, 它重定向到访客登录状态
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
查看代码:-
Route.php
Route::get('login', 'LoginController@index');
Route::post('signin', 'LoginController@signin');
Route::get('signout', 'LoginController@signout');
Route::group(['prefix' => 'api'], function() {
Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]);
Route::post('authenticate', 'AuthenticateController@authenticate');
});
Route::group(['middleware' => ['web']], function () {
Route::auth();
Route::get('/', 'StatisticsController@index');
Route::get('/statistics', 'StatisticsController@statistics');
});
登录控制器
public function index() {
return view('login');
}
public function signin(Request $request) {
$errors = [];
$email=$request['email'];
$password= $request['password'];
$credentials = array('email' => $email, 'password' => $password);
if(Auth::attempt($credentials))
{
return redirect('/statistics');
}
return "bad request";
}
public function signout()
{
Auth::logout();
return redirect('/login'); }
}
统计控制器
class StatisticsController extends Controller {
public function __construct()
{
$this->middleware('auth');
}
public function index() {
return view('statistics')->with($data);
}
public function statistics() {
return view('statistics');
}
}
Kernal.php 请注意,有 JWT 身份验证库,我仅将其用于移动应用的静态身份验证。
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
];
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
],
];
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken'
];
中间件/authenticate.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class Authenticate
{
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
return $next($request);
}
}
【问题讨论】:
-
其他都是 Laravel 5.2 的应用程序吗?
app/Http/Middleware/Authenticate.php是否完好无损?app/Http/Controllers/Auth中的控制器呢?你也可以在你的问题中清理你的英语吗?至少添加一些标点符号 - 很难知道一个场景在哪里结束,下一个场景在哪里开始。 -
问题不清楚!
-
你能给我看看 \App\Http\Middleware\Authenticate 文件吗??
-
@tremby 一切相关的都是库存。我还在问题中添加了中间件/authinticate.php,关于 Auth 文件夹中的控制器,它是库存的 auth 控制器,我什至没有碰它,抱歉缺少标点符号,我已经编辑了问题谢谢你回复
-
@CanCelik 现在再次检查,抱歉:)
标签: laravel authentication laravel-5 laravel-routing laravel-5.2