后台登录逻辑

1、没有登录状态,访问后台页面都应该跳转到登录页
已经登录状态:
1、访问登录页面,应该跳转到后台首页

解决方案:
后台登录拦截:
1、传统common/base.php控制器,后台控制器都去继承base父类,在base控制器中做登录拦截
2、后台应用中间件(这里多应用,不做全局中间件)的前置操作校验做登录拦截

后台登录功能实现-01

1、开启验证验证码

2、后台校验提交数据
1)是否为post提交
2)验证码是否正确(需要开启全局中间件的session)
3)验证用户名为条件查询是否存在数据库
4)验证用户状态status是否为激活状态
5)密码校验采用加密盐+md5方式加密验证是否正确
6)保存用户信息到session中实现多页面登录状态与展示用户信息
7)更新该用户的登录时间
8)验证成功跳转到后台首页
9)登录后再次访问登录页根据session值重定向到后台首页

后台管理员表结构

CREATE TABLE `qing_admin` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,`password` char(32) COLLATE utf8_unicode_ci NOT NULL,`last_login_time` int(11) NOT NULL,`group_id` int(2) NOT NULL,`status` int(11) NOT NULL DEFAULT '1' COMMENT '1启用0禁用',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='后台管理员';

实现代码

public function index(){//9)登录后再次访问登录页根据session值重定向到后台首页if(session('adminSessionData')){return redirect('/qingadmin/index');}if (request()->isPost()) {$data = input('post.');//验证码校验if (!captcha_check($data['verifycode'])) {return alert('验证码错误', 'index', 5);};//验证码用户名$adminData = Db::name('admin')->where('user_name', $data['username'])->find();if (!$adminData) {return alert('用户名错误', 'index', 5);}//如果管理员有状态,status=1合法  0禁止if ($adminData['status'] == 0) {return alert('您的账号被禁止登录', 'index', 5);}//密码校验$salt = 'zxcvbn';if ($adminData['password'] != md5($salt . $data['password'])) {return alert('密码错误', 'index', 5);}Db::name('admin')->where('id', $adminData['id'])->update(['last_login_time' => time()]);session('adminSessionData', $adminData);return alert('登录成功', '/qingadmin/index/index', 6);} else {return view();}}

后台登录退出-02

登录退出功能:
1、清空键名为adminSessionData的用户信息
2、tp方法redirect()重定向回到登录页面

实现代码

 public function logout(){session('adminSessionData',null);return redirect('/qingadmin/login/index');}

前置后台应用中间件-03

1、判断用户信息session(‘adminSessionData’)获取不到,并且不是login登录提交的数据,则重定向到登录页
2、需要注意的是登录页是没有校验用户登录session信息,在加入判断是login登录页不进行重定向,防止多次重定向问题

使用

定义中间件,并将middleware/Check.php与middleware,php文件移动至后台qingadmin文件夹下

php think make:middleware Check

Check.php判断逻辑实现代码

<?php
declare (strict_types = 1);namespace app\qingadmin\middleware;class Check
{/*** 处理请求** @param \think\Request $request* @param \Closure       $next* @return Response*///前置中间件public function handle($request, \Closure $next){if(empty(session('adminSessionData')) && !preg_match('/login/',$request->pathinfo())){return redirect((string) url('login/index'));}return $next($request);}
}

middleware.php使用中间判断逻辑

<?php
// 后台应用中间件定义文件
return [// 全局请求缓存// \think\middleware\CheckRequestCache::class,// 多语言加载// \think\middleware\LoadLangPack::class,// Session初始化\think\middleware\SessionInit::class,\app\qingadmin\middleware\Check::class,
];

tp6实现商城后台登录功能相关推荐

  1. 【计算机毕设】后台登录功能实现

    计算机毕设系列文章目录 第一章 毕设题分析及设计 第二章 项目数据库设计 第三章 maven项目搭建 第四章 前端文件结构 第五章 后台登录功能实现 第六章 后台登出功能实现 第七章 项目功能实现 第 ...

  2. vue rule鼠标移走校验_Vue-cli+Element-ui实现后台管理系统(二)实现后台登录功能...

    前言 接上文,本文主要讲解vue+element-ui后台管理系统的登录功能的实现,api接口这块如果对后端技术以及node的实现不太了解的情况下,可以写出假数据进行模拟操作~ 一.创建登录文件并配置 ...

  3. androidstudio做登录界面_Vue-cli+Element-ui实现后台管理系统(二)实现后台登录功能...

    前言 接上文,本文主要讲解vue+element-ui后台管理系统的登录功能的实现,api接口这块如果对后端技术以及node的实现不太了解的情况下,可以写出假数据进行模拟操作~ 一.创建登录文件并配置 ...

  4. 商城项目登录功能实现(动图)

    导语 去年上传了重构小米官网商城的首页,但是没有登录注册功能.不论是js原生方法实现,还是jq和vue等框架实现,个人认为是大同小异,思路是一样的. 在使用vue构建数字商城的项目中使用vue也实现了 ...

  5. Java实现校园商城后台管理系统

    1.校园商城后台管理系统背景 本系统模拟商城系统开发的校园商城后台管理系统. 2.校园商城后台管理系统技术架构 主要技术 Spring.SpringMVC.Mybatis JSP.JSTL.jQuer ...

  6. 一个前端写的php博客系统2--前台展示+后台登录

    前台首页展示 首页的侧边预留的位置是给后面的统计,热门之类的版块预留位置... 控制器 文章列表展示要考虑到文章数量增多后分页展示,那么我们要统计文章数量,使用 count() 计算文章总数,然后使用 ...

  7. 美多商城后台管理之登录、浏览器的同源策略

    登录 后台管理中我们首先需要完成登录功能,我们可以通过改写美多表单登录来完成相应的功能. 在后台登录中,由于我们前端服务和后端服务的域名不一样,所以我们首先解决跨域问题. 登后的状态保持我们采用jwt ...

  8. 一步步带你做vue后台管理框架(三)——登录功能

    系列教程<一步步带你做vue后台管理框架>第三课 github地址:vue-framework-wz 线上体验地址:立即体验 <一步步带你做vue后台管理框架>第一课:介绍框架 ...

  9. 微擎人人商城 后台开启WAP访问后 微信浏览器 跳过授权 手机号密码登录

    公众号未认证 人人商城后台开启了WAP访问可以在普通浏览器里面用手机号密码登录 不过在微信里浏览器里访问url提示需要认证号认证登录 首先判断微信环境下访问返回false 然后在 ewei_shopv ...

最新文章

  1. 如何下载python软件-python如何下载
  2. Qt实现FlatUI样式(开源)
  3. MVC源码学习之AuthorizeAttribute
  4. element-ui中用el-dialog+el-table+el-pagination实现文件默认选中且在分页的条件下有记忆功能...
  5. Android系统的开机画面显示过程分析
  6. 跨浏览器共享数据_可以让跨域要数据的模式:jsonp
  7. Google将推中文信息流产品,今日头条们请注意~
  8. php定时发布微博,使用sae定时任务实现终身自动发表微博(PHP实现)
  9. Tcp ip 网络编程入门(一)
  10. 数据结构java实验_20172301 《Java软件结构与数据结构》实验一报告
  11. 使用模板快速编写测试用例
  12. 个子矮s弯如何看点打方向图解_s弯如何看点打方向图解?s弯方向盘打法口诀
  13. python重装之前要卸载吗_关于fedroa下安全地卸载和重装python
  14. JAVA实现对阿里云DNS的解析管理
  15. 阿里开源android脚手架,Android脚手架搭建
  16. 简单梳理一下MySQL多版本并发控制原理
  17. 【软考中级】多媒体应用设计师复习笔记第一章
  18. 思科路由器常用接口说明
  19. 涂鸦模组二次开发RTL8720CF
  20. figure字体 latex_Matlab的figure中输入上标、下标、特殊符号或字体 (转)

热门文章

  1. HBUILDERX怎么导入html文件,HBuilderX使用教程 HBuilderX如何导入图片
  2. 一个学习FreeBSD不错的中文网站
  3. 《人月神话》一句话总结各章核心观点
  4. mac 备份文件 太大 时间机器_如何在Mac OS X中设置时间机器备份 | MOS86
  5. Google Earth Engine(GEE)——将shp文件导出到Google硬盘中
  6. Git——版本控制为王
  7. 电商网络支付结算风险与防范
  8. 移动硬盘插到电脑上忽然不显示的解决办法(不一定有用,仅我个人的解决方法)
  9. 电子面单怎么申请-JAVA/PHP
  10. 财路网每日原创推送:轻信微信上的投资专家,男子亏损四十多万!