我想在Laravel中创建一个登录系统。我有一个登录页面和一个仪表板。在访问仪表板之前,我想检查管理员是否已登录。一切正常但唯一的问题是如果用户尝试直接从URL访问仪表板(如http://localhost/myproject/dashboard),我希望系统能够检查会话是否已设置。如果已设置,请加载页面。如果没有,请将其重定向到带有消息的登录页面。我在master.blade.php文件中编写了检查代码,以查看是否设置了会话
这是我的登录页面,其中包含表格(视图):
<div class="container">
@if (session('status'))
<div class="alert alert-danger fade in">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<i class=""></i> <strong align="center">{{session('status')}}</strong>
</div>
@endif
<form class="form-signin" action="auth_admin" method="post">
<h2 class="form-signin-heading">admin login</h2>
<div class="login-wrap">
<input type="text" class="form-control" name="admin_email" placeholder="Email ID" autofocus>
<input type="password" class="form-control" name="admin_password" placeholder="Password">
<input type = "hidden" name = "_token" value = "<?php echo csrf_token(); ?>">
<label class="checkbox">
<span class="pull-right"> <a href="#"> Forgot Password?</a></span>
</label>
<button class="btn btn-lg btn-login btn-block" type="submit">LOGIN</button>
</div>
</form>
</div>
这是我的路线:
Route::get('webadmin','Admin_controller@index');
Route::get('adminlogin','Admin_controller@admin_login_page');
Route::post('auth_admin','Admin_controller@auth_admin');
这是我的控制器:
<?php
namespace App\Http\Controllers;
use App\General_model;
use App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesResources;
use DB;
class Admin_controller extends Controller
{
public function index()
{
return view('adminpanel.index');
}
public function admin_login_page()
{
return view('adminpanel.loginpage');
}
public function auth_admin(Request $request)
{
$admin_email = $request->input('admin_email');
$admin_password = md5($request->input('admin_password'));
$checklogin = DB::table('admin_login')->select('admin_id','admin_email','admin_name')->where(['admin_email'=>$admin_email,'admin_password'=>$admin_password])->first();
if(count($checklogin) > 0)
{
$request->session()->put('admin_id',$checklogin->admin_id);
$request->session()->put('admin_name',$checklogin->admin_name);
$request->session()->put('admin_email',$checklogin->admin_email);
return redirect()->action('Admin_controller@index');
} else {
return redirect()->action('Admin_controller@admin_login_page')->with('status','Incorrect Email ID or Password');
}
}
}
这是我的master.blade.php(查看)
<!DOCTYPE html>
<html lang="en">
<head>
@include('adminpanel.template.header')
<?php
if(!Session::has('admin_email') && !Session::has('admin_name')) {
return Redirect::to('Admin_controller@admin_login_page')->with('status','Please login to continue!');
}
?>
</head>
<body>
<section id="container" class="">
<!--top bar start-->
<header class="header white-bg">
@include('adminpanel.template.top_bar')
</header>
<!--top bar end-->
<!--sidebar start-->
<aside>
@include('adminpanel.template.sidebar')
</aside>
<!--sidebar end-->
<!--main content start-->
<section id="main-content">
<section class="wrapper">
@yield('main_content')
</section>
</section>
<!--main content end-->
</section>
@include('adminpanel.template.footer')
</body>
</html>
答案 0 :(得分:0)
添加此方法
public function __construct()
{
$this->middleware("auth");
}
在您的控制器中