tp6实现商城后台登录功能
后台登录逻辑
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实现商城后台登录功能相关推荐
- 【计算机毕设】后台登录功能实现
计算机毕设系列文章目录 第一章 毕设题分析及设计 第二章 项目数据库设计 第三章 maven项目搭建 第四章 前端文件结构 第五章 后台登录功能实现 第六章 后台登出功能实现 第七章 项目功能实现 第 ...
- vue rule鼠标移走校验_Vue-cli+Element-ui实现后台管理系统(二)实现后台登录功能...
前言 接上文,本文主要讲解vue+element-ui后台管理系统的登录功能的实现,api接口这块如果对后端技术以及node的实现不太了解的情况下,可以写出假数据进行模拟操作~ 一.创建登录文件并配置 ...
- androidstudio做登录界面_Vue-cli+Element-ui实现后台管理系统(二)实现后台登录功能...
前言 接上文,本文主要讲解vue+element-ui后台管理系统的登录功能的实现,api接口这块如果对后端技术以及node的实现不太了解的情况下,可以写出假数据进行模拟操作~ 一.创建登录文件并配置 ...
- 商城项目登录功能实现(动图)
导语 去年上传了重构小米官网商城的首页,但是没有登录注册功能.不论是js原生方法实现,还是jq和vue等框架实现,个人认为是大同小异,思路是一样的. 在使用vue构建数字商城的项目中使用vue也实现了 ...
- Java实现校园商城后台管理系统
1.校园商城后台管理系统背景 本系统模拟商城系统开发的校园商城后台管理系统. 2.校园商城后台管理系统技术架构 主要技术 Spring.SpringMVC.Mybatis JSP.JSTL.jQuer ...
- 一个前端写的php博客系统2--前台展示+后台登录
前台首页展示 首页的侧边预留的位置是给后面的统计,热门之类的版块预留位置... 控制器 文章列表展示要考虑到文章数量增多后分页展示,那么我们要统计文章数量,使用 count() 计算文章总数,然后使用 ...
- 美多商城后台管理之登录、浏览器的同源策略
登录 后台管理中我们首先需要完成登录功能,我们可以通过改写美多表单登录来完成相应的功能. 在后台登录中,由于我们前端服务和后端服务的域名不一样,所以我们首先解决跨域问题. 登后的状态保持我们采用jwt ...
- 一步步带你做vue后台管理框架(三)——登录功能
系列教程<一步步带你做vue后台管理框架>第三课 github地址:vue-framework-wz 线上体验地址:立即体验 <一步步带你做vue后台管理框架>第一课:介绍框架 ...
- 微擎人人商城 后台开启WAP访问后 微信浏览器 跳过授权 手机号密码登录
公众号未认证 人人商城后台开启了WAP访问可以在普通浏览器里面用手机号密码登录 不过在微信里浏览器里访问url提示需要认证号认证登录 首先判断微信环境下访问返回false 然后在 ewei_shopv ...
最新文章
- 如何下载python软件-python如何下载
- Qt实现FlatUI样式(开源)
- MVC源码学习之AuthorizeAttribute
- element-ui中用el-dialog+el-table+el-pagination实现文件默认选中且在分页的条件下有记忆功能...
- Android系统的开机画面显示过程分析
- 跨浏览器共享数据_可以让跨域要数据的模式:jsonp
- Google将推中文信息流产品,今日头条们请注意~
- php定时发布微博,使用sae定时任务实现终身自动发表微博(PHP实现)
- Tcp ip 网络编程入门(一)
- 数据结构java实验_20172301 《Java软件结构与数据结构》实验一报告
- 使用模板快速编写测试用例
- 个子矮s弯如何看点打方向图解_s弯如何看点打方向图解?s弯方向盘打法口诀
- python重装之前要卸载吗_关于fedroa下安全地卸载和重装python
- JAVA实现对阿里云DNS的解析管理
- 阿里开源android脚手架,Android脚手架搭建
- 简单梳理一下MySQL多版本并发控制原理
- 【软考中级】多媒体应用设计师复习笔记第一章
- 思科路由器常用接口说明
- 涂鸦模组二次开发RTL8720CF
- figure字体 latex_Matlab的figure中输入上标、下标、特殊符号或字体 (转)
热门文章
- HBUILDERX怎么导入html文件,HBuilderX使用教程 HBuilderX如何导入图片
- 一个学习FreeBSD不错的中文网站
- 《人月神话》一句话总结各章核心观点
- mac 备份文件 太大 时间机器_如何在Mac OS X中设置时间机器备份 | MOS86
- Google Earth Engine(GEE)——将shp文件导出到Google硬盘中
- Git——版本控制为王
- 电商网络支付结算风险与防范
- 移动硬盘插到电脑上忽然不显示的解决办法(不一定有用,仅我个人的解决方法)
- 电子面单怎么申请-JAVA/PHP
- 财路网每日原创推送:轻信微信上的投资专家,男子亏损四十多万!