【发布时间】:2016-06-27 12:34:13
【问题描述】:
您好,我正在尝试将自定义管理面板添加到我的 laravel 项目中。我有一个登录页面。输入有效的电子邮件和密码后,用户可以登录仪表板。但是问题是当我输入有效的电子邮件和密码时,它总是停留在登录屏幕中。
这是我的登录表单
<form class="form-horizontal" action="{{ route('admin.login') }}" method="post">
{!! csrf_field() !!}
<fieldset>
<div class="input-prepend" title="Email">
<span class="add-on"><i class="halflings-icon user"></i></span>
<input class="input-large span10" name="email" required maxlength="100" id="email" type="text" placeholder="type useremail"/>
</div>
<div class="clearfix"></div>
<div class="input-prepend" title="Password">
<span class="add-on"><i class="halflings-icon lock"></i></span>
<input class="input-large span10" name="password" required id="password" type="password" placeholder="type password"/>
</div>
<div class="clearfix"></div>
<label class="remember" for="remember"><input type="checkbox" id="remember" />Remember me</label>
<div class="button-login">
<button type="submit" class="btn btn-primary">Login</button>
</div>
<div class="clearfix"></div>
</fieldset>
</form>
这是我的路线
Route::get('/admin/login', [
'as' => 'admin.login',
'uses' => 'AdminController@getLogin'
]);
Route::post('/admin/login', [
'as' => 'admin.login',
'uses' => 'AdminController@postLogin'
]);
Route::group(['middleware' => 'auth'
], function () {
Route::get('/admin', [
'as' => 'dashboard',
'uses' => 'AdminController@index']);
Route::get('/logout', [
'as' => 'logout',
'uses' => 'AdminController@getLogout'
]);
});
这是我的管理员控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use Auth;
class AdminController extends Controller
{
public function index()
{
return view('admin.admin_master');
}
public function getLogin()
{
return view('admin.admin_login');
}
public function postLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required'
]);
if (Auth::attempt(['email' => $request['email'], 'password' => $request['password']])) {
// Authentication passed...
return redirect()->route('dashboard');
}
return redirect()->back()->with(['fail' => 'Could not Login']);
}
public function getLogout()
{
Auth::logout();
return redirect()->route('admin.login');
}
}
这里是 Authenticate.php
use Closure;
use Illuminate\Support\Facades\Auth;
class Authenticate
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest(route('admin.login'))->
withError('You must be logged in !');
}
}
return $next($request);
}
}
【问题讨论】:
-
它总是停留在登录屏幕或仅在您输入有效的电子邮件和密码时?
-
当我输入有效的电子邮件和密码时。
-
你能加入
dashboard路线吗?并检查Auth::attempt是返回真还是假。 -
我检查过,Auth::attempt 返回 true,并且 dsahboard 路由将我重定向到登录屏幕,因为我将路由放在中间件中。如果我不使用 meddleware 一切正常,但问题是登录后如果我按下后退按钮它会注销我。
-
请提供中间件文件。并检查日志文件是否显示任何错误。
标签: laravel