跳到主要内容

情人节快乐

· 阅读需 8 分钟
Quany
软件工程师

官网部署

  • Nginx 版本:nginx-1.26.3

Nginx 配置


server {
listen 80; # 监听端口
server_name your-domain.com; # 替换为你的域名或 IP 地址

# 静态文件的根目录
root /var/www/myapp; # 替换为你的静态文件目录

# 默认首页
index index.html;

# 配置静态资源
location / {
try_files $uri $uri/ /index.html; # 用于支持单页面应用(SPA)的路由
}
}

Yum 常用命令

yum 是基于 RPM 的 Linux 发行版(如 CentOS、Fedora、RHEL 等)中常用的包管理工具,用于安装、更新、卸载软件包,并自动处理依赖关系。以下是 yum 的常用命令:

  1. 安装软件包

    安装单个软件包

    sudo yum install [包名]

    示例:

    sudo yum install vim

    安装多个软件包

    sudo yum install [包名1] [包名2] ...

    示例:

    sudo yum install vim git

    安装指定版本的软件包

    sudo yum install [包名]-[版本号]

    示例:

    sudo yum install vim-8.2.243
  2. 更新软件包

    更新所有软件包

    sudo yum update

    更新指定软件包

    sudo yum update [包名]

    示例:

    sudo yum update vim

    检查可用更新

    sudo yum check-update
  3. 卸载软件包

    卸载软件包

    sudo yum remove [包名]

    示例:

    sudo yum remove vim

    卸载软件包及其依赖

    sudo yum autoremove
  4. 搜索软件包

    搜索软件包

    sudo yum search [关键字]

    示例:

    sudo yum search vim

    列出可用软件包

    sudo yum list available

    列出已安装软件包

    sudo yum list installed
  5. 清理缓存

    清理所有缓存

    sudo yum clean all

    清理旧的软件包缓存

    sudo yum clean packages

    清理元数据缓存

    sudo yum clean metadata
  6. 查看软件包信息

    查看软件包信息

    sudo yum info [包名]

    示例:

    sudo yum info vim

    查看已安装软件包的详细信息

    sudo yum info installed [包名]
  7. 查看依赖关系

    查看软件包的依赖关系

    sudo yum deplist [包名]

    示例:

    sudo yum deplist vim
  8. 启用/禁用软件仓库

    启用软件仓库

    sudo yum-config-manager --enable [仓库名]

    禁用软件仓库

    sudo yum-config-manager --disable [仓库名]
  9. 查看软件仓库

    列出所有软件仓库

    sudo yum repolist

    列出启用的软件仓库

    sudo yum repolist enabled

    列出禁用的软件仓库

    sudo yum repolist disabled
  10. 重新生成缓存

    重新生成软件仓库缓存

    sudo yum makecache

微信小程序登录流程

  1. 前端获取临时登录凭证(code

    • 用户在小程序中触发登录操作,例如点击登录按钮。
    • 小程序前端调用微信提供的wx.login()接口,获取一个临时登录凭证code。该凭证的有效期为 5 分钟。
    • 示例代码:
    wx.login({
    success: (res) => {
    if (res.code) {
    console.log("登录凭证:", res.code);
    // 将 code 发送到开发者服务器
    wx.request({
    url: "https://yourserver.com/login", // 替换为你的服务器接口地址
    method: "POST",
    data: {
    code: res.code,
    },
    header: {
    "Content-Type": "application/json",
    },
    success: (response) => {
    console.log("服务器返回:", response.data);
    },
    fail: (error) => {
    console.error("请求失败:", error);
    },
    });
    } else {
    console.error("登录失败:", res.errMsg);
    }
    },
    });
  2. 后端调用微信接口换取用户身份标识

    • 开发者服务器接收到前端发送的code后,调用微信的code2Session接口,传入appidsecretjs_code(即前端获取的code)和grant_type(固定值为authorization_code),换取用户的openidsession_key
    • 示例代码(Python):
    from fastapi import FastAPI, HTTPException, Request
    from pydantic import BaseModel
    import httpx

    app = FastAPI()

    # 微信小程序登录配置
    APP_ID = "your-appid" # 替换为你的 appid
    APP_SECRET = "your-secret" # 替换为你的 appsecret
    WX_LOGIN_URL = "https://api.weixin.qq.com/sns/jscode2session"

    # 请求体模型
    class LoginRequest(BaseModel):
    code: str

    @app.post("/login")
    async def login(data: LoginRequest):
    code = data.code

    # 构造请求参数
    params = {
    "appid": APP_ID,
    "secret": APP_SECRET,
    "js_code": code,
    "grant_type": "authorization_code",
    }

    try:
    # 使用 httpx 发送 GET 请求到微信接口
    async with httpx.AsyncClient() as client:
    response = await client.get(WX_LOGIN_URL, params=params)

    # 解析微信返回数据
    if response.status_code == 200:
    data = response.json()
    if "errcode" in data:
    raise HTTPException(status_code=400, detail=f"微信登录错误: {data['errmsg']}")

    openid = data.get("openid")
    session_key = data.get("session_key")

    # 返回 openid 和 session_key(实际应用中请不要直接返回 session_key)
    # 用 openid 及其它信息生成 token 返回给前端就好
    return {"openid": openid, "session_key": session_key}
    else:
    raise HTTPException(status_code=500, detail="微信接口调用失败")
    except Exception as e:
    raise HTTPException(status_code=500, detail=f"登录失败: {str(e)}")
  3. 生成自定义登录态(token

    • 后端根据openid查询或创建用户,并生成自定义登录态(如token)。
    • token返回给前端,前端将其存储在本地(如使用wx.setStorageSync)。
    • 在后续的业务请求中,前端需要将存储的token传递给后端,以便验证用户身份。
  4. 登录态的维护

    • 开发者需要在服务器端维护用户的登录态,例如设置token的有效期、续期机制等。
    • 如果用户在多设备上登录,需要确保登录态的同步和安全性。

注意事项

  • session_key的安全性

    • session_key是对用户数据进行加密签名的密钥,开发者服务器不应将其下发到小程序,也不应对外提供。
    • 开发者需要确保服务器的安全性,防止session_key泄露。
  • code的使用限制

    • code是临时登录凭证,只能使用一次,且有效期为 5 分钟。
  • 隐私保护

    • 小程序获取用户信息时,需要遵循微信的隐私保护政策,确保用户数据的安全。
  • 多端适配

    • 如果需要适配多端应用(如 App 和小程序),可以使用微信提供的多端登录模板或自定义登录页,减少代码改动。

通过以上流程,开发者可以实现微信小程序的登录功能,并为用户提供便捷的身份验证和个性化服务。

微信公众号

微信公众号