tp框架的后台登录(二)

登录相关路由设置

Route::rule('/admin/login', 'admin/LoginController/login');
Route::rule('/yzm', 'admin/LoginController/verify');
Route::rule('/admin/dologin', 'admin/LoginController/doLogin');

1.创建后台登录控制器

php think make:controller admin/LoginController

2.登录表单

//获取登录表单
public function login()
{
return view('login/login');
}

3.表单页面

View/login/login.html 修改表单  准备验证码

//生成验证码图片
public function verify()
{
    $captcha = new Captcha();
    $captcha -> imageH = 35;
    $captcha -> imageW = 120;
    $captcha -> length = 4;
    $captcha -> fontSize = 18;
    $captcha -> useCurve = false;
    return $captcha->entry(); 
}


<form action="/admin/dologin" method="post">
    <ul class="admin_items">
        <li>
            <label for="user">用户名:</label>
            <input type="text" name="username" value="" id="user" size="40" class="admin_input_style" />
        </li>
        <li>
            <label for="pwd">密码:</label>
            <input type="password" name="password" value="" id="pwd" size="40" class="admin_input_style" />
        </li>

        <li>
            <label for="pwd">验证码:</label>
            <input type="text" name="yzm" value="" id="pwd" size="15" class="admin_input_style" /><img src="/yzm" onclick="this.src='/yzm/?id='+Math.random();">
        </li>
        <li>
            <input type="submit" tabindex="3" value="提交" class="btn btn-primary" />
        </li>
    </ul>
</form>

4.进行登录验证

public function doLogin(Request $request)
{
    $code = $request -> post('yzm');
    $captcha = new Captcha();
    //验证码验证
    if (!$captcha -> check($code)) {
        $this -> error('验证码错误, 请重新输入', '/admin/login');
    }


    //验证用户名  密码
    //接收
    $uname = $request -> post('username');
    $upass = md5($request -> post('password'));
    //dump($upass);
    $user = User::where('username','=',$uname) -> where('password', '=', $upass) -> find();

    if ($user) {
        if ($user['qx'] == 1) {
            //登录成功后 将用户信息保存在session中 方便访问
            session('adminUserInfo', $user);
            session('adminFlag', true);
            $this -> success('登录成功', '/admin');
        } else {
            $this -> error('没有权限登录', '/admin/login');
        }
    } else {
        $this -> error('账号或密码不对', '/admin/login');
    }


}

5.模板显示

管理员:{:session(adminUserInfon.username')}

6.用户退出

public function logout()
{
    session('adminFlag', false);
    $this -> success('退出成功', '/admin/login');
}

7.在后台模块使用登录验证

public function __construct()
{
    if (empty(session('adminFlag'))) {
        $this -> error('请先登录', '/admin/login');
    }
}

8.也可以使用 行为 路由参数

后置行为执行

V5.1.6+版本开始建议使用中间件替代路由后置行为。
可以为某个路由或者某个分组路由定义后置行为执行,表示当路由匹配成功后,执行的行为,例如:

Route::get('user/:id', 'User/read')
    ->after(['\app\admin\behavior\类名']);




<?php

namespace app\admin\behavior;

use think\Controller;

class CheckLogin extends Controller
{
    public function run()
    {
        echo 'aaaaaaa';
    }
}

//测试
Route::rule('/test', function(){
    (new app\admin\behavior\CheckLogin) -> run();

});

用户操作路由 也可以使用路由组的方式写 方便加登录验证

Route::rule('/user/create', 'admin/UserController/create');
Route::rule('/user/save', 'admin/UserController/save');
Route::rule('/user/index', 'admin/UserController/index');
Route::rule('/user/delete/:id', 'admin/UserController/delete');
Route::rule('/user/edit/:id', 'admin/UserController/edit');
Route::rule('/user/update/:uid', 'admin/UserController/update');

路由组

Route::group(['name' => 'user', 'prefix' => 'admin/UserController/'],function(){
    Route::rule('create', 'create', 'get');
    Route::rule('save', 'save');
    Route::rule('index', 'index');
    Route::rule('delete/:id', 'delete');
    Route::rule('edit/:id', 'edit');
    Route::rule('update/:uid', 'update');
});



Route::group(['name' => 'user', 'prefix' => 'admin/UserController/'],function(){
    Route::rule('create', 'create', 'get');
    Route::rule('save', 'save');
    Route::rule('index', 'index');
    Route::rule('delete/:id', 'delete');
    Route::rule('edit/:id', 'edit');
    Route::rule('update/:uid', 'update');
}) -> after(['\app\admin\behavior\CheckLogin']);

猜你喜欢

转载自blog.csdn.net/z_c_z_/article/details/80182602