当前位置: 首页 > news >正文

Remix Auth:Remix 和 React Router 应用的认证方案

文章目录

  • Remix Auth:Remix 和 React Router 应用的认证方案
    • 解决什么问题
    • 怎么用
    • 进阶玩法
    • 自定义策略
    • 总结

Remix Auth:Remix 和 React Router 应用的认证方案

Remix Auth 是一个开源的认证库,专为 Remix 和 React Router 应用设计。项目由 Sergio Xalambrí 维护,在 GitHub 上获得 2,200+ Star。

解决什么问题

Remix 和 React Router 应用需要一套完整的服务端认证机制。很多开发者用 Passport.js,但那套是为 Express 设计的,不兼容 Web Fetch API。Remix Auth 的思路和 Passport.js 一样,但全部重写,跑在 Web Fetch API 上。

核心设计是策略模式。每种认证方式独立打包,按需安装。官方提供了 Form、OAuth 2.0、GitHub 等策略,社区也维护了更多。

怎么用

安装就一行命令:

npm install remix-auth

引入Authenticator类,传入用户数据类型,实例化。再用createCookieSessionStorage创建会话存储:

import { Authenticator } from "remix-auth"; import { createCookieSessionStorage } from "react-router"; type User = { id: string; email: string; name: string }; export const sessionStorage = createCookieSessionStorage({ cookie: { name: "__session", httpOnly: true, path: "/", sameSite: "lax", secrets: ["s3cr3t"], secure: process.env.NODE_ENV === "production", }, }); export const authenticator = new Authenticator<User>();

注册策略也简单。比如用 FormStrategy 做账号密码登录:

import { FormStrategy } from "remix-auth-form"; authenticator.use( new FormStrategy(async ({ form }) => { const email = form.get("email") as string; const password = form.get("password") as string; return await login(email, password); }), "user-pass", );

然后在路由的 action 里调用authenticator.authenticate,验证通过后把用户数据存到 session,重定向到首页或看板页。

进阶玩法

根据用户数据做不同跳转。比如新用户走引导流程,老用户直接进看板,在 action 里判断后分别 redirect 即可。

错误处理方面,认证失败会抛出异常,在 catch 块里拦截处理。OAuth 流程中策略可能抛出 redirect 响应,记得用if (error instanceof Response) throw error;透传。

退出登录直接销毁 session:

export async function action({ request }) { let session = await sessionStorage.getSession(request.headers.get("cookie")); return redirect("/login", { headers: { "Set-Cookie": await sessionStorage.destroySession(session) }, }); }

保护路由也不复杂,写个authenticate辅助函数,loader 里检查 session 中有没有用户数据,没有就扔回登录页。

自定义策略

所有策略继承Strategy抽象类,实现自己的authenticate方法。如果需要存中间状态,用SetCookie写入 cookie 到浏览器,下次请求用Cookie对象读回来。

更高级的用法是用AsyncLocalStorage传递额外数据给 authenticate 方法。

总结

Remix Auth 的定位很明确:给 Remix 和 React Router 生态提供一套原生认证方案。策略模式让扩展性很好,你可以直接使用已有策略,也可以写自己的。项目文档写得很清楚,从安装到自定义策略都有示例,上手成本低。

和 React Router 生态提供一套原生认证方案。策略模式让扩展性很好,你可以直接使用已有策略,也可以写自己的。项目文档写得很清楚,从安装到自定义策略都有示例,上手成本低。

http://www.jsqmd.com/news/1155717/

相关文章:

  • 佛山长辈处置闲置腕表留心!回收商家套路多,不懂行情极易被忽悠 - 全城热点
  • 深入解析OWASP ZAP主动扫描引擎:从原理到实战的代码级精读
  • 2026筑宅安|杭州专业屋顶漏水修缮,大小屋面工程一站式根治渗水难题 - 筑宅安
  • 康普顿背散射成像 vs 透射成像:3大核心差异与安检场景选择指南
  • 5分钟完成AI到PSD无损转换:告别手动分层烦恼的终极指南
  • 139.标准化 PLC 工程:模式切换 + 气缸保护 + 自动报警复位全功能落地
  • 西门子S7-1200 PLC三层电梯控制:TIA Portal V17与Factory IO虚拟调试全流程
  • Java面试宝典:从基础到架构9
  • 扎克伯格说AI智能体“发展慢于预期“,到底慢在哪?——从技术本质拆解四大核心挑战
  • 直播预告|PG 30 周年系列直播第四期:大规模PG生产环境——亿级用户、PB级数据的架构真相
  • AT89C52+DHT11温湿度报警系统:Proteus 8.13仿真与Keil C51代码模块化解析
  • 【2026-07】精编土工格栅厂家优秀厂家哪个好?精编土工格栅厂家、精编土工格栅厂家优选——山东环晟 - 多才菠萝
  • MediaPipe移动端AI Pipeline的架构设计:从Calculator图模型到跨平台GPU推理的完整链路
  • 2026年国内优质影像仪选购指南:口碑好实力强的可靠品牌推荐 - 深度智识库
  • 安卓手游手柄适配:从技术原理到《太阳天堂的钥匙》实战指南
  • 上海黄金回收怎么选才不吃亏?2026 七大连锁机构硬核实测分析 - 小蝶回收测评
  • 统信UOS部署Burp Suite全攻略:Java环境配置与安全测试工具集成
  • Mac 环境变量配置太麻烦?试试这个可视化工具
  • Linux 用户管理与文件权限
  • 机器学习入门速通:4大核心算法原理与Python实战
  • 告别IDM试用期烦恼:开源脚本如何帮你永久锁定30天免费体验
  • 2026年环美机械供应商口碑排行榜揭晓
  • AI浪潮下,腾讯重启QQ宠物,桌面宠物品类迎来新机会?
  • 【2026-07】靠谱的钢塑土工格栅厂家优秀厂家怎么挑?靠谱的钢塑土工格栅厂家、靠谱的钢塑土工格栅厂家选择指南——山东环晟 - 多才菠萝
  • Ansys 2024 R2 强度理论实战:3种材料失效准则在悬臂梁分析中的对比
  • 2026天津名表回收避坑测评|老城商圈正规门店清单|2026行情标准+权威鉴定指南 - 分享测评官
  • AI Agent技能插件安全扫描实战:静态规则与LLM语义分析双引擎解析
  • TDA7468与PIC18F65K40构建的高保真音频处理系统设计
  • 招标文件智能解析——3分钟读懂500页招标文件,AI是怎么做到的?
  • C语言 static/volatile 关键字:嵌入式开发中 3 个易错场景与内存优化实战