1、根据session去判断用户是否登录,登录后才可以进index首页,否则返回login页面,借助中间件
(1)修改路由
Route::group(['middleware' => ['web','admin.login'],'prefix'=>'admin','namespace'=>'Admin'], function () { //注册一个中间件admin.login //prefix 为路由前缀,namespace为命名空间,为下面的路由省去重复值 //路由要放中间件里面,否则会生成不了session //登录页面不能放到中间件里面,否则连登录页面都不能进入 Route::get('index','IndexController@index'); Route::get('info','IndexController@info'); });
(2)app\Kernel.php
添加admin.login一行
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,'admin.login' => \App\Http\Middleware\Adminlogin::class,];
(3) 控制台进入项目根目录,创建中间件
php artisan make:middleware Adminlogin
修改app\Http\Middleware\Adminlogin.php
<?phpnamespace App\Http\Middleware;use Closure;class Adminlogin {/*** Handle an incoming request.** @param \Illuminate\Http\Request $request* @param \Closure $next* @return mixed*///如果session('user')为空,则返回登录页面public function handle($request, Closure $next){if(!session('user')){return redirect('admin/login');}return $next($request);} }
验证:
进入LoginController.php,login方法中,清除session
访问admin/login页面的时候,session信息被清除
session(['user'=>null]); return view('admin.login');
此时:当用户登录后才可以进入index页面,重新开启另一个login页面,session被清,再返回刚刚的index页面,刷新,跳转到登录页面(测试完,注释掉session一句)
2、首页退出功能
(1) 添加路由
Route::get('quit','LoginController@quit');
(2)LoginController.php 添加quit方法
public function quit() {session(['user'=>null]);return redirect('admin/login'); }
(3)修改index.blade.php,完善退出按钮
<li><a href="{{url('admin/quit')}}">退出</a></li>
验证:
用户登录之后,进入index页面,点击退出之后,跳转到login页面,此时session被清除,单独访问index则会跳转到login页面