1、管理员登录中间件和注销

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

<?php

namespace 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);
    }
}
View Code

验证:

进入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页面

posted @ 2017-01-25 15:04  封情葬爱  阅读(684)  评论(1编辑  收藏  举报