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

更新日期: 2021-05-12 阅读次数: 4751 字数: 358 分类: ReactJS

管理员用户表

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 聊聊, 查看更多联系方式