首页
/ remix-auth-socials 的安装和配置教程

remix-auth-socials 的安装和配置教程

2025-05-17 08:07:55作者:彭桢灵Jeremy

项目的基础介绍和主要的编程语言

remix-auth-socials 是一个开源项目,它为 Remix Auth 提供了多个社交登录策略,如 GitHub、Google、Discord 等。这些策略允许用户通过他们的社交账号快速登录你的应用程序。该项目主要是用 TypeScript 编写的,并使用 Remix Run 作为前端框架。

项目使用的关键技术和框架

  • TypeScript: 一种由 Microsoft 开发的开源编程语言,它是 JavaScript 的一个超集,添加了静态类型。
  • Remix Run: 一个全栈 web 框架,它使用 React 编写 UI,并提供了服务器端渲染和 API 路由等功能。
  • Remix Auth: 一个用于 Remix Run 的身份验证框架,它提供了各种身份验证策略和中间件。

项目安装和配置的准备工作和详细的安装步骤

准备工作

在开始安装和配置 remix-auth-socials 之前,请确保你的开发环境中已经安装了以下工具:

  • Node.js: JavaScript 运行时环境,用于执行 JavaScript 代码。
  • npmyarn: 包管理工具,用于安装和管理项目依赖。

安装步骤

  1. 创建一个新的 Remix Run 项目:
npx create-remix@latest my-app
cd my-app
  1. 安装 remix-auth-socials:
npm install remix-auth-socials
  1. 创建一个 auth.server.ts 文件,并添加以下代码来配置身份验证策略:
import { Authenticator } from 'remix-auth';
import { GoogleStrategy, FacebookStrategy, SocialsProvider } from 'remix-auth-socials';
import { sessionStorage } from '~/services/session.server';

// 创建一个 Authenticator 实例
export let authenticator = new Authenticator(sessionStorage, {
  sessionKey: '_session',
});

// 添加 Google 身份验证策略
authenticator.use(
  new GoogleStrategy(
    {
      clientID: 'YOUR_CLIENT_ID',
      clientSecret: 'YOUR_CLIENT_SECRET',
      callbackURL: 'http://localhost:3000/auth/google/callback',
    },
    async ({ profile }) => {
      // 在这里找到或创建用户
      return profile;
    }
  )
);

// 添加 Facebook 身份验证策略
authenticator.use(
  new FacebookStrategy(
    {
      clientID: 'YOUR_CLIENT_ID',
      clientSecret: 'YOUR_CLIENT_SECRET',
      callbackURL: 'http://localhost:3000/auth/facebook/callback',
    },
    async ({ profile }) => {
      // 在这里找到或创建用户
      return profile;
    }
  )
);
  1. 创建身份验证路由:
// app/routes/auth/$provider.tsx
import { ActionArgs, redirect } from '@remix-run/node';
import { authenticator } from '~/server/auth.server';

export let loader = () => redirect('/login');

export let action = ({ request, params }: ActionArgs) =>
  authenticator.authenticate(params.provider, request);
// app/routes/auth/$provider.callback.tsx
import { LoaderArgs } from '@remix-run/node';
import { authenticator } from '~/server/auth.server';

export let loader = async ({ request, params }: LoaderArgs) =>
  authenticator.authenticate(params.provider, request, {
    successRedirect: '/dashboard',
    failureRedirect: '/login',
  });
  1. 创建登录页面,添加社交登录按钮:
// app/routes/login.tsx
import { Form } from '@remix-run/react';
import { SocialsProvider } from 'remix-auth-socials';

interface SocialButtonProps {
  provider: SocialsProvider;
  label: string;
}

const SocialButton: React.FC<SocialButtonProps> = ({ provider, label }) => (
  <Form action={`/auth/${provider}`} method="post">
    <button>{label}</button>
  </Form>
);

export default function Login() {
  return (
    <>
      <SocialButton provider={SocialsProvider.DISCORD} label="Login with Discord" />
      <SocialButton provider={SocialsProvider.GITHUB} label="Login with GitHub" />
      <SocialButton provider={SocialsProvider.GOOGLE} label="Login with Google" />
      <SocialButton provider={SocialsProvider.FACEBOOK} label="Login with Facebook" />
      <SocialButton provider={SocialsProvider.MICROSOFT} label="Login with Microsoft" />
      <SocialButton provider={SocialsProvider.LINKEDIN} label="Login with LinkedIn" />
    </>
  );
}
  1. 创建登出路由:
// app/routes/logout.tsx
import { ActionArgs } from '@remix-run/node';
import { authenticator } from '~/server/auth.server';

export let action = async ({ request, params }: ActionArgs) =>
  authenticator.logout(request, { redirectTo: '/' });
  1. 创建受保护的路由:
// app/routes/dashboard.tsx
import { useLoaderData, Form } from '@remix-run/react';
import { LoaderArgs } from '@remix-run/node';
import { authenticator } from '~/server/auth.server';

export let loader = async ({ request, params }: LoaderArgs) => {
  const user = await authenticator.isAuthenticated(request, {
    failureRedirect: '/',
  });
  return { user };
};

export default function Dashboard() {
  const { user } = useLoaderData<typeof loader>();
  return (
    <div>
      <h1>Welcome {user.displayName}!</h1>
      <p>This is a protected page</p>
      <Form action="/logout" method="post">
        <button>Logout</button>
      </Form>
    </div>
  );
}
  1. 运行项目:
npm run dev

现在,你应该可以访问你的应用程序的登录页面,并通过社交账号进行登录了。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
220
2.25 K
flutter_flutterflutter_flutter
暂无简介
Dart
524
116
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
JavaScript
210
286
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
982
581
pytorchpytorch
Ascend Extension for PyTorch
Python
67
97
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
566
91
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.02 K
399
GLM-4.6GLM-4.6
GLM-4.6在GLM-4.5基础上全面升级:200K超长上下文窗口支持复杂任务,代码性能大幅提升,前端页面生成更优。推理能力增强且支持工具调用,智能体表现更出色,写作风格更贴合人类偏好。八项公开基准测试显示其全面超越GLM-4.5,比肩DeepSeek-V3.1-Terminus等国内外领先模型。【此简介由AI生成】
Jinja
40
0