golang gin & ant design pro 前后端分离的登录实现

文章目录

    管理员用户表

    admin_user

    • id
    • username
    • password
    • last_login_at

    创建第一个管理员

    方案:

    • 命令行工具 (golang 需要编译,提供一个命令行工具麻烦)
    • 网页接口 (不安全)
    • 自动内置一个管理员,服务启动时(或者打开登录页时)判断如果没有管理员,就自动创建一个。登录后修改密码。

    综合来看,第三种方案更合适。

    管理后台 TODO 清单

    • done: 登录接口
    • done: 新增默认管理员
    • done: 生成 token
    • done: golang gin token 校验 middleware
    • done: currentUser 接口,获取用户信息
    • done: 前端请求 header 加上 jwt token
    • done: 退出登录
    • done: 登录用户默认头像
    • done: 后台管理员列表页
    • 修改管理员密码
    • 新增管理员
    • done: 显示最后登录时间

    golang gin 密码加密存储方法

    https://dev.to/techschoolguru/how-to-securely-store-passwords-3cg7

    login 接口

    对应 antd pro v5 中 login 接口返回的数据结构定义:

    type LoginResult = {
        status?: string;
        type?: string;
        currentAuthority?: string;
    };
    

    golang gin 中需返回:

    c.JSON(http.StatusOK, gin.H{
    	"status": "ok",
    })
    

    注意:这里没有使用 success 字段。

    退出登录

    > grep outLogin -r src/
    src/components/RightContent/AvatarDropdown.tsx:import { outLogin } from '@/services/ant-design-pro/api';
    src/components/RightContent/AvatarDropdown.tsx:  await outLogin();
    

    将调用接口退出登录,改为清空本地 local storage 中的 token。

    //await outLogin();
    localStorage.setItem('token', "");
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式