Skip to content

youngoing/blog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

实现网站的模块化设计,每个模块都使用不同的子域名,并且可以用不同的架构和语言开发,同时共享用户登录和注册功能:

1. 模块化设计的思路

  • 每个模块独立部署:每个模块可以作为独立的服务,拥有自己的代码库和技术栈(语言、框架、数据库等)。这些服务可以部署在不同的服务器或容器上,并绑定不同的子域名。
  • 反向代理(如Nginx)管理子域名:使用Nginx或类似的反向代理来路由不同的子域名。例如,module1.example.com 路由到后端用 Node.js 开发的服务,module2.example.com 路由到用 Python 或 Ruby 开发的服务。
  • API Gateway:通过 API 网关来集中管理各个模块的通信和路由。API 网关可以统一处理身份验证、权限控制等。

2. 共享用户信息:单点登录(SSO)

为了实现不同模块之间的用户登录和注册信息共享,单点登录(SSO)是比较合适的方案。SSO 允许用户在多个不同的服务之间只需登录一次,并能够在这些服务中共享身份验证状态。

  • JWT(JSON Web Token):可以使用 JWT 在不同模块间传递用户的身份验证信息。用户登录后生成 JWT,JWT 可以存储在浏览器的 Cookie 或 LocalStorage 中,然后每个模块(服务)通过 JWT 来验证用户身份。

3. 技术栈建议

现有模块认证和博客已经使用后端语言rust,后端框架axum,前端框架nextjs完成,数据库使用mysql

  • 前端:可以使用 React、Vue.js 或 Angular 进行开发,负责调用后端 API 并进行页面渲染。

  • 后端

    :不同的模块可以用适合的语言和框架开发。例如:

    • Python(Django、Flask)
    • Node.js(Express、NestJS)
    • Ruby(Rails)
    • Go、Rust 等语言
  • 数据库

实现步骤示例

  1. 用户管理模块:搭建一个中心化的用户认证服务,使用 OAuth 2.0 或 JWT 进行用户登录和注册。

  2. 模块开发:

    • auth.szpu.online:负责用户的登录和注册逻辑,使用axum+ssr。
    • blog.szpu.online:一个博客模块,使用axum+nextjs。
  3. 反向代理配置:在 Nginx 配置文件中为每个子域名添加路由规则,将请求转发到不同的后端服务。

  4. 单点登录集成:每个子域名模块调用 SSO 服务进行登录验证,使用 JWT 来管理用户的身份验证。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published