react-app-rewired与Auth0身份认证集成

【免费下载链接】react-app-rewired Override create-react-app webpack configs without ejecting 【免费下载链接】react-app-rewired 项目地址: https://gitcode.com/gh_mirrors/re/react-app-rewired

你是否正在使用create-react-app构建应用,却因无法自定义Webpack配置而困扰?是否需要为应用添加安全可靠的身份认证系统?本文将带你一步实现react-app-rewired与Auth0的无缝集成,无需eject即可扩展配置,同时构建企业级身份认证功能。

项目背景与解决方案

react-app-rewired是一个允许开发者在不执行eject操作的情况下自定义create-react-app Webpack配置的工具。通过它,我们可以轻松扩展项目功能,如集成Auth0身份认证(Authentication,身份验证)服务。

react-app-rewired logo

项目核心文件结构:

准备工作:安装与配置react-app-rewired

1. 安装依赖

首先确保你的项目中已安装react-app-rewired:

npm install react-app-rewired --save-dev

2. 修改package.json脚本

将默认的react-scripts替换为react-app-rewired:

"scripts": {
-  "start": "react-scripts start",
+  "start": "react-app-rewired start",
-  "build": "react-scripts build",
+  "build": "react-app-rewired build",
-  "test": "react-scripts test",
+  "test": "react-app-rewired test",
  "eject": "react-scripts eject"
}

3. 创建配置文件

在项目根目录创建config-overrides.js文件,这是自定义Webpack配置的入口:

module.exports = {
  webpack: function(config, env) {
    // 在这里添加Webpack配置自定义
    return config;
  },
  devServer: function(configFunction) {
    return function(proxy, allowedHost) {
      const config = configFunction(proxy, allowedHost);
      // 在这里添加开发服务器配置
      return config;
    };
  }
};

集成Auth0身份认证

1. 安装Auth0 SDK

npm install @auth0/auth0-react

2. 创建Auth0配置文件

在src目录下创建auth0-config.js:

export const auth0Config = {
  domain: "YOUR_AUTH0_DOMAIN",
  clientId: "YOUR_AUTH0_CLIENT_ID",
  redirectUri: window.location.origin
};

3. 在应用中集成Auth0

修改src/index.js,添加Auth0 Provider:

import React from 'react';
import ReactDOM from 'react-dom';
import { Auth0Provider } from '@auth0/auth0-react';
import { auth0Config } from './auth0-config';
import App from './App';

ReactDOM.render(
  <Auth0Provider
    domain={auth0Config.domain}
    clientId={auth0Config.clientId}
    redirectUri={auth0Config.redirectUri}
  >
    <App />
  </Auth0Provider>,
  document.getElementById('root')
);

使用react-app-rewired自定义Webpack以支持Auth0

1. 添加环境变量支持

为了安全存储Auth0凭证,我们使用环境变量。首先安装dotenv-webpack:

npm install dotenv-webpack --save-dev

2. 配置Webpack加载环境变量

修改config-overrides.js,添加dotenv-webpack插件:

const Dotenv = require('dotenv-webpack');

module.exports = {
  webpack: function(config, env) {
    // 添加Dotenv插件
    config.plugins.push(new Dotenv({
      path: '.env',
      safe: true
    }));
    
    return config;
  },
  // 其他配置...
};

3. 创建.env文件存储敏感信息

REACT_APP_AUTH0_DOMAIN=your-auth0-domain
REACT_APP_AUTH0_CLIENT_ID=your-auth0-client-id

实现登录组件

创建src/components/LoginButton.js:

import React from 'react';
import { useAuth0 } from '@auth0/auth0-react';

const LoginButton = () => {
  const { loginWithRedirect } = useAuth0();
  
  return (
    <button onClick={() => loginWithRedirect()}>
      登录
    </button>
  );
};

export default LoginButton;

测试与验证

1. 运行开发服务器

npm start

2. 验证配置是否生效

访问应用并点击登录按钮,应该会重定向到Auth0登录页面。登录成功后,将被重定向回应用。

高级配置:自定义开发服务器

如需配置HTTPS或代理,可以通过config-overrides.js的devServer函数实现:

module.exports = {
  // ...其他配置
  devServer: function(configFunction) {
    return function(proxy, allowedHost) {
      const config = configFunction(proxy, allowedHost);
      
      // 配置HTTPS
      config.https = true;
      
      // 配置代理
      config.proxy = {
        '/api': {
          target: 'http://localhost:5000',
          changeOrigin: true
        }
      };
      
      return config;
    };
  }
};

总结与后续步骤

通过本文,你已经学会:

  1. 使用react-app-rewired自定义create-react-app配置
  2. 集成Auth0身份认证服务
  3. 安全管理环境变量
  4. 实现基本的登录功能

后续可探索:

  • 添加用户个人资料展示
  • 实现基于角色的访问控制
  • 配置退出登录和令牌刷新

完整项目文档请参考README.md,更多高级配置技巧可查阅官方文档。

如果你觉得本文有帮助,请点赞、收藏并关注,下期将带来"react-app-rewired性能优化实战"。

【免费下载链接】react-app-rewired Override create-react-app webpack configs without ejecting 【免费下载链接】react-app-rewired 项目地址: https://gitcode.com/gh_mirrors/re/react-app-rewired

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐