老师我在6-10章节中有个问题我在login页面的时候打印session的数据显示正常
但我的admin用户登录成功后可以正常跳转到后台index页面但是看打印session的数据时候就显示错误了
而且只要登录成功后再打开login页面就显示下图不能显示页面只能清空缓存才能正常显示login页面回事什么问题谢谢
我的login 控制器代码
namespace appadmincontroller;
use thinkacadeView;
use appcommonmodelmysqlAdminUser;
class Login extends AdminBase {
//如果用户已经登录跳转到后台首页
public function initialize() {
if ($this -> isLogin()) {
return $this -> redirect(url("index/index"));
}
}
//加载Login登录页面模板
public function index() {
return View::fetch();
}
//生成admin的md5密码
public function md5() {
dump (session(config("admin.session_admin")));
echo md5("admin_roger"); //admin_roger是加密隐藏字符串
}
//登录页面检查
public function check() {
//检查判断登录页面是否是用Post方式传过来的请求如果不是发出错误提醒
if (!$this -> request -> isPost()){
return show(config("status.error"),"登录请求方式错误");
}
//参数校验 1.原生方式
$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"), "登录时提交内容不能为空");
}
//校验 验证码是否正确使用TP6方法,使用此方法须要在app目录下的middleware.php中开启Session初始化
if (!captcha_check($captcha)) {
//验证码校验失败
return show(config("status.error"), "验证码错误请检查");
}
try{
//从数据库中获取用户数据
$adminUserObj = new AdminUser();
$adminUser = $adminUserObj -> getAdminUserByUsername($username);
//如果数据库表用户为空或者admin的用户状态不等于status.php文件的mysql.table_normal设置
if (empty($adminUser) || $adminUser -> status != config("status.mysql.table_normal")) {
return show(config("status.error"), "用户名不存在");
}
$adminUser = $adminUser -> toArray(); //把$adminUser对象转换为字符串
//判断密码是否正确
if ($adminUser['password'] !=md5($password."_roger")) {
return show(config("status.error"), "密码错误");
}
//更新信息到MySQL表中
$updateData = [
"last_login_time" => time(),
"last_login_ip" => request() -> ip(),
"update_time" => time(),
];
$res = $adminUserObj -> updateById($adminUser['id'], $updateData);
if (empty($res)) {
return show(config("status.success"), "登录失败");
}
} catch (Exception $e) {
//todo 记录日志 $e -> getMessage() "内部错误通过日志方式获取到日志文件中
return show(config("status.success"), "内部日常登录失败");
}
//记录session,配置文件在admin/config/admin.php
session(config("admin.session_admin"),$adminUser);
return show(config("status.success"), "登录成功");
}
namespace app\admin\controller;
use app\BaseController;
use think\exception\HttpResponseException;
class AdminBase extends BaseController
{
public $adminUser = null;
/**
* 初始化基础控制器
*/
public function initialize()
{
parent::initialize();
// // TODO: 判断是否登录,如果用户的session为空,跳转到登陆页
// if (empty($this -> isLogin()))
// {
// return $this -> redirect(url("login/index"), 302);
// }
}
/**
* 判断用户是否已经登录
* @return bool
*/
public function isLogin()
{
$this -> adminUser = session(config("admin.session_admin"));
if (empty($this -> adminUser))
{
return false;
}
return true;
}
/**
* redirect方法定义
* @param mixed ...$args
*/
public function redirect(...$args)
{
throw new HttpResponseException(redirect(...$args));
}
}