1.开启中间件session
<?php
// 全局中间件定义文件
return [
// 全局请求缓存
// \think\middleware\CheckRequestCache::class,
// 多语言加载
// \think\middleware\LoadLangPack::class,
// Session初始化
\think\middleware\SessionInit::class
];
2.在admin文件夹下创建config文件夹,创建admin.php
<?php
return [
'session_admin' => 'adminUser',
];
3.使用session用config文件夹中admin文件的进行存储
<?php
namespace app\admin\controller;
use app\BaseController;
use think\facade\View;
use app\common\model\mysql\AdminUser;
class Login extends BaseController {
public function index() {
return View::fetch();
}
public function md5() {
// admin admin
halt(session(config("admin.session_admin")));
// echo md5("admin_singwa_abc");
}
public function check() {
if (!$this->request->isPost()) {
return show(config("status.error"), "请求方式错误");
}
// 参数检验 1、原生方式 2、TP6 验证机制
$username = $this->request->param("username", "", "trim");
$password = $this->request->param("password", "", "trim");
$captcha = $this->request->param("captcha", "", "trim");
if (empty($username) || empty($password) || empty($captcha)) {
return show(config("status.error"), "参数不能为空");
}
// 需要校验验证码
if (!captcha_check($captcha)) {
// 验证码校验失败
return show(config("status.error"), "验证码不正确");
}
try {
$adminUserObj = new AdminUser();
$adminUser = $adminUserObj->getAdminUserByUsername($username);
// halt($adminUser);
// 判断用户名是否存在
if (empty($adminUser) || $adminUser->status != config("status.mysql.table_normal")) {
return show(config("status.error"), "不存在该用户");
}
$adminUser = $adminUser->toArray();
// 判断密码是否正确
if ($adminUser['password'] != md5($password . "_singwa_abc")) {
return show(config("status.error"), "密码错误");
}
// 需要记录信息到mysql表中
$updateData = [
"last_login_time" => time(),
"last_login_ip" => $this->request->ip(),
"update_time" => time(),
];
$res = $adminUserObj->updateById($adminUser['id'], $updateData);
if (empty($res)) return show(config("status.error"), "登陆失败");
} catch(\Exception $e) {
// todo 记录日志 $->getMessage();
return show(config("status.error"), "内部异常,登陆失败");
}
// 记录session
session(config("admin.session_admin"), $adminUser);
return show(config("status.success"), "登陆成功");
}
}
4.AdminUser.php
<?php
namespace app\common\model\mysql;
use think\Model;
class AdminUser extends Model {
/**
* 根据用户名获得后端表的数据
* @param $username
* @return array|bool|Model|null
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getAdminUserByUsername($username) {
if (empty($username)) return false;
return $this->where(["username" => trim($username)])->find();
}
/**
* 根据主键ID更新数据表中的数据
* @param $id
* @param $data
* @return bool
*/
public function updateById($id, $data) {
$id = intval($id);
if (empty($id) || empty($data) || !is_array($data)) return false;
return $this->where(["id" => $id])->save($data);
}
}
5.登录成功后,访问md5方法,返回值为
^ null