@ aslative/ auth (帮助)
会话管理,密码散列,RBAC和OAuth——没有外部依赖性
部分 基础 生态系统——一个基于信号的网络运行时间超过本土的HTML.
安装
npm install @basenative/auth
快速启动
import {
createSessionManager,
hashPassword,
verifyPassword,
defineRoles,
createGuard,
sessionMiddleware,
requireAuth,
} from '@basenative/auth';
// Password hashing (uses node:crypto — no bcrypt dependency)
const hash = await hashPassword('secret123');
const ok = await verifyPassword('secret123', hash); // true
// Session management
const sessions = createSessionManager({ maxAge: 24 * 60 * 60 * 1000 });
const session = await sessions.create({ userId: 42, role: 'admin' });
// RBAC
const roles = defineRoles({
admin: { permissions: ['read', 'write', 'delete'] },
editor: { permissions: ['read', 'write'] },
viewer: { permissions: ['read'] },
});
const guard = createGuard(roles);
guard.can('editor', 'write'); // true
guard.can('viewer', 'write'); // false
API 密码
会议
createSessionManager(options?)——创建带有可插件存储的会话管理器. 选项 :store, (中文(简体) ),cookieName, (中文(简体) ),maxAge, (中文(简体) ),secure, (中文(简体) ),sameSite, (中文(简体) ),httpOnly。 。 。 ..create(data)——创建新会话并返回..get(id)以身份证获取会话(返回)null(如果过期)..update(id, data)将数据合并到现有的会话中..destroy(id)删除会话.
createMemoryStore()——内幕会话商店(开发/单程).createDbStore(db)- 数据库支持的会话存储使用@basenative/db适配器.
密码
hashPassword(password)使用 PBKDF2 的密码node:crypto返回aPromise<string>。 。 。 .verifyPassword(password, hash)对照所储存的散列验证密码。 回返aPromise<boolean>。 。 。 .
非洲区域局
defineRoles(config)——定义带有权限数组的角色等级.createGuard(roles)—— 创建守护对象.can(role, permission)检查.
中间软件
sessionMiddleware(manager)从请求的 cookie 装入会话并附加到ctx.state.session。 。 。 .requireAuth(options?)——以401个答复拒绝未经认证的请求.login(manager, sessionData, ctx)——创建会话,并设置会话 cookie 对应.logout(manager, ctx)- 破坏本届会议并清除饼干.
OAuth 供应商
credentialsProvider(options)——用户名/密码认证策略.oauthProvider(providerName, options)——OAuth 2.0流为被命名的提供者.providers——为普通供应商(GitHub,Google等)预设了OAuth设置.
许可证
阿帕奇 - 2.0