IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> redis做用户登陆 -> 正文阅读

[大数据]redis做用户登陆

作者:recommend-item-box type_blog clearfix

给用当前登录的用户信息的id 生成token token作为redis的键 给token 设置值 设置token键的到期过期时间 登陆成功 token返回前端 前端每次调用接口都要传token

<?php
namespace app\api\controller\liumy;
use think\cache\driver\Redis;

class Index //extends Base
{
    public static $userinfo;
    public function __construct()
    {
        //随便写的一个判断 验证登陆的方法 登陆时不需要
        if(\think\facade\Request::param('token')){
            self::check_login();
        }

    }
    /**
     * 用户登陆
     */
    public function login(){

        $redis = new Redis();
        //根据用户名 密码 查询用户信息忽略

        //假如登陆用户的id为12
        $uid = 12;
        //假设token为 token生成方式  md5($uid.time().rand(10000,99999))
        $token = md5($uid.time().rand(10000,99999)); //如果要保证token的唯一 可以生成token的方式复杂一些
        //可以把每次生成的token 和 对应的uid 以日志的方式记录下来
        //登陆信息正确 用户信息为
        $userinfo = [
            'id' => 12,
            'username' => 'admin',
            'rule' => '1,2,3,4',
            'passwd' => 'admin'
        ];

        //1,可以把token对应的用户信息(比如:用户id)存在数据库 方便根据token获取用户信息
        //2,也可以给redis中的$token键赋值用户信息的数据
        //以第一种方式举例
        $res = $redis->set($token,json_encode($userinfo),30); //登陆有效时间为30秒
        if($res){
            exit(json_encode([
                'code' => 200,
                'msg' => '登陆成功',
                'date' => [
                    'token' => $token, //该token 处理登陆接口 其他接口都要带token
                ]
            ]));

        }else{
            exit(json_encode([
                'code' => 201,
                'msg' => '登陆失败',
                'date' => ''
            ]));
        }
    }

	/**
     * 验证用户登陆
     */
    public static function check_login(){
        //验证用户登陆
        $redis = new Redis();
        $token = \think\facade\Request::param('token');

        if(!$redis->get($token)){
            exit(json_encode([
                'code' => 201,
                'msg' => '登陆过期 请重新登录',
                'date' => ''
            ]));
        }else{
            //登陆成功

            //获取登陆用户的信息
            $userinfo = $redis->get($token);

            //因为调用接口有操作 延长token的过期时间
            $redis->set($token,$userinfo,30);//只要是有操作 就延长toekn过期时间
            dump('已登录,进行其他操作');
            dump(json_decode($userinfo));
             self::$userinfo = json_decode($userinfo);
            //进行接口的其他逻辑操作
            die;
        }
    }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:17:06  更:2022-03-11 22:18:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:58:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码