session问题,以及用户页面登录成功后的不能login页面报错问题

来源:6-10 后台用户登录-数据更新和session处理

China_zr

2020-03-04

老师我在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));
    }


}
写回答

3回答

hippo417

2020-03-06

用halt命令打印。

手册说明:不要在控制器中使用包括 die 、 exit 在内的中断代码。如果你需要调试并中止执行,可以使用系统提 供的 halt 助手函数。

0
0

singwa

2020-03-05

//img.mukewang.com/szimg/5e6070f3095895d312820382.jpg

看看您是不是调用这个方法里面的内容没有生效导致的?

0
0

singwa

2020-03-04

实际上 //img1.sycdn.imooc.com/szimg/5e5fc7e8098510b112260376.jpg  您这个login/index 逻辑截图我看看。。。

0
2
singwa
回复
China_zr
AdminBase 也辛苦贴下。。
2020-03-07
共2条回复

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1475 学习 · 1336 问题

查看课程