2.0.0 • Published 3 years ago

@mmstudio/an000029 v2.0.0

Weekly downloads
7
License
MIT
Repository
github
Last release
3 years ago

用户名密码登录

postgres

用户数据存储到postgres数据库中,其json字段更便于存储可扩展的用户信息

用户表

表结构

用户基础信息表

字段名字段类型字段描述
idtext用户id
infojson用户信息

用户授权信息表

字段名字段类型字段描述
idtext授权信息关键字
user_idtext用户id
identity_typetext登录类型(手机号 邮箱 用户名)或第三方应用名称(微信 微博等)
identifiertext标识(手机号 邮箱 用户名或第三方应用的唯一标识)
credentialtext密码凭证(站内的保存密码,站外的不保存或保存token)

建表语句

DROP TABLE IF EXISTS mm_users;
CREATE TABLE mm_users (
	id text NOT NULL,
	info json,
	PRIMARY KEY (id)
) WITH (oids = false);

DROP INDEX IF EXISTS mm_users_id;
CREATE UNIQUE INDEX mm_users_id ON mm_users(id);

COMMENT ON TABLE mm_users IS '用户基础信息';
COMMENT ON COLUMN mm_users.id IS '用户id';
COMMENT ON COLUMN mm_users.info IS '用户信息';

DROP TABLE IF EXISTS mm_user_auths;
CREATE TABLE mm_user_auths (
	id text NOT NULL,
	user_id text,
	identity_type text,
	identifier text,
	credential text,
	last_active bigint,
	ip text,
	CONSTRAINT pk_mm_user_auths PRIMARY KEY (identifier, identity_type)
) WITH (oids = false);

DROP INDEX IF EXISTS mm_user_auths_id;
CREATE UNIQUE INDEX mm_user_auths_id ON mm_user_auths(id);
DROP INDEX IF EXISTS mm_user_auths_user_id;
CREATE INDEX mm_user_auths_user_id ON mm_user_auths(user_id);
DROP INDEX IF EXISTS mm_user_auths_identity_type;
CREATE INDEX mm_user_auths_identity_type ON mm_user_auths(identity_type);
DROP INDEX IF EXISTS mm_user_auths_identifier;
CREATE INDEX mm_user_auths_identifier ON mm_user_auths(identifier);

COMMENT ON TABLE mm_user_auths IS '用户授权信息';
COMMENT ON COLUMN mm_user_auths.user_id IS 'users.id';
COMMENT ON COLUMN mm_user_auths.identity_type IS '登录类型(手机号 邮箱 用户名)或第三方应用名称(微信 微博等)';
COMMENT ON COLUMN mm_user_auths.identifier IS '标识(手机号 邮箱 用户名或第三方应用的唯一标识)';
COMMENT ON COLUMN mm_user_auths.credential IS '密码凭证(站内的保存密码,站外的不保存或保存token)';

完整的配置文件

{
	"session": {
		"secret": "Mmstudio123",
		"expiresIn": "30d"
	},
	"db": {
		"type": "postgres",
		"source": "postgres://mmstudio:Mmstudio123@127.0.0.1:5432/mmstudio"
	}
}

docker-file

docker-compose安置

version: '3.7'

services:
  postgres:
    image: postgres
    container_name: postgres
    volumes:
      - /home/taoqf/data/postgre:/var/lib/postgresql/data
    restart: always
    environment:
      POSTGRES_DB: mmstudio
      POSTGRES_USER: mmstudio
      POSTGRES_PASSWORD: Mmstudio123
    ports:
      - 5432:5432
  adminer:
    container_name: adminer
    image: adminer
    restart: always
    ports:
      - 8080:8080