TP6.0 基础控制器登录流 v0.0.1
基础 登录 控制器 TP6.0
2023-06-13 09:16:39 时间
1. 定义公共基础控制器
定义应用的公共控制器 Base.php
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\BaseController;
/**
* admin 应用基础控制器
*/
class Base extends BaseController
{
// 初始化
protected function initialize()
{
$this->prefix = 'aiaad';
$this->home = '/admin/index';
$this->login = '/admin/login';
}
/**
* 检测是否登录
*
* @return bool true 已登录 false 未登录
*/
protected function checkLogin()
{
return session('?' . $this->prefix);
}
// +-----------------------------------------------------------
// | 登录、退出
// +-----------------------------------------------------------
/**
* 登录成功
*/
protected function sign($data)
{
session($this->prefix, $data);
$this->homePage();
}
/**
* 退出登录
*/
protected function logout()
{
session($this->prefix, null);
$this->loginPage();
}
// +-----------------------------------------------------------
// | 重定向
// +-----------------------------------------------------------
/**
* 重定向到登陆页
*/
protected function loginPage()
{
$this->redirect($this->login);
}
/**
* 重定向到后台主页
*/
protected function homePage()
{
$this->redirect($this->home);
}
/**
* 解决基初始化方法中无法重定向问题
*
* @param ...$args redirect助手函数参数
*/
private function redirect(...$args)
{
throw new \think\exception\HttpResponseException(redirect(...$args));
}
}
2. 定义用于校验登录状态控制器 Auth.php
(未登录重定向到登陆页)
<?php
declare(strict_types=1);
namespace app\Admin\controller;
/**
* 基础控制器处理登陆状态校验
*
* 需要校验登陆状态的控制器继承当前控制器即可
*/
class Auth extends Base
{
// 初始化
protected function initialize()
{
// 调用父类初始化方法
parent::initialize();
// 未登录跳转到登陆页面
$this->checkLogin() || $this->loginPage();
}
}
3. 登录相关方法, 已登录访问控制器方法重定向到后台主页
<?php
declare(strict_types=1);
namespace app\admin\controller;
/**
* 处理登录相关方法
*/
class Login extends Base
{
/**
* 初始化方法
*
* 已经登录再访问登陆页面重定向到后台主页
*/
protected function initialize()
{
// 调用父类初始化方法
parent::initialize();
// 已经登录访问登录页重定向到后台主页
$this->checkLogin() && $this->homePage();
}
/**
* 登录接口
*/
public function index()
{
// ... 登录逻辑
// 登录成功后重定向到后台主页
$data = ['id' => mt_rand(1, 999), 'name' => '张三'];
$this->sign($data);
}
}
相关文章
- 【NLP基础】英文关键词抽取RAKE算法
- 音质评价(一):音频基础
- 制作系统U盘详细教程,以及分盘等基础操作
- SEO基础入门学习
- 大数据必学Java基础(七十五):多线程与程序、进程、线程之间概念详解
- Vue指令学习 | 零基础入门
- java基础-异或运算[通俗易懂]
- R语言基础笔记-01(数据类型与向量)
- XYLibrary笔记八:PackageManager基础
- 学习小组Day4笔记-R语言基础
- Linux 基础:案例深入解析linux NFS机制
- Redis入门基础常用操作命令整理
- 使用jqMobi开发app基础:登录页面的实现详解手机开发
- Oracle SQL语法:基础入门指南(oraclesql语法)
- Linux基础测试:突破考题,助你轻松过关!(linux基础考题)
- Linux用户登录:基础操作指南(linux用户登录命令)
- 领略Oracle优化之美基础知识简讲(oracle优化基础讲解)