## [PHP交流群:494826865(点击群号立即加群)](https://jq.qq.com/?_wv=1027&k=50Qy5h6)
# 管理员登录补充
> 到这里管理员的登录功能就完成了,但是还有一些细节上需要做一下优化。
1. 管理员已登录时,自动跳过登录页面
2. 在后台操作时,如果登录超时的处理。
##### 一、自动跳过登录页面
>[success] 在进入登录页面时,需要判断管理员是否登录
控制器层:`Admin/LoginController.php`
~~~
/**
* 加载登页面
* @RequestMapping(route="login", method=RequestMethod::GET)
*/
public function index()
{
//判断是否登录
if($this->loginlogic->checkLoginStatus()){
return context()->getResponse()->redirect("/admin");
}
return view("admin/login/login");
}
~~~
逻辑层:`Modle/Logic/LoginLogic.php`
新增:`checkLoginStatus`方法,用来检测管理员的登录状态
~~~
/**
* 判断用户登录状态
*/
public function checkLoginStatus(){
if(HttpSession::current()->has("username") && HttpSession::current()->has("userid")){
return true;
}
return false;
}
~~~
##### 二、登录超时的处理
>[success] 判断是否登录超时,所有的后台操作都进行验证检测,所以在这里直接在中间件中进行验证。
在`Http/Middleware/CheckLoginMiddleware.php`添加检则代码
~~~
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
if(HttpSession::current()->has("username") && HttpSession::current()->has("userid")){
// before request handle
return $handler->handle($request);
}
//判断请求类型
if($request->isAjax()){
throw new HttpExecption("登录超时",3);
}
return context()->getResponse()->redirect("/admin/login");
// after request handle
}
~~~
>[success] 添加过之后,即可进行检测,前提是控制器要经过中间件。
- 前言
- 第一部分:课程介绍
- 第二部分:docker的快速入门
- docker的安装
- docker的运行和配置
- docker操作过程中的常见问题
- Docker的常用命令
- 第三部分 Swoft的开发环境部署和工具的安装
- 第四部分:Swoft的安装和常见问题
- swoft的安装
- swoft代码同步
- Swoft的热重载
- swoft安装过程中的常见问题
- 第五部分:swoft的基础知识快速入门
- 目录结构
- 控制器
- 路由
- 配置
- 请求与响应
- 中间件
- 异常处理
- 视图
- Bean
- 数据库操作
- http-session
- 验证器
- 第六部分:实战
- Swoft的安装(本地)
- Swoft的环境部署
- 调整项目目录结构
- 前台页面部署
- 前台首页
- 引入前端资源
- 其它页面的引入
- 后台功能的实现
- 创建并连接数据库
- 管理员登录功能的实现
- 代码优化-函数
- 代码优化-全局异常处理
- 代码结构分层
- 完善管理员的登录功能
- 管理员密码修改功能的实现
- 管理员登录补充
- 站点配置功能的实现
- 后台菜单处理
- 课程管理功能
- 创建数据表并创建实体
- 实现课程的添加功能
- 文件上传
- 课程列表功能的实现
- 课程编辑功能的实现
- 课程的删除功能
- 课程推荐功能的实现
- 前台数据调用