情人节快乐
· 阅读需 8 分钟
官网部署
- 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 的常用命令:
-
安装软件包
安装单个软件包
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
-
更新软件包
更新所有软件包
sudo yum update
更新指定软件包
sudo yum update [包名]
示例:
sudo yum update vim
检查可用更新
sudo yum check-update
-
卸载软件包
卸载软件包
sudo yum remove [包名]
示例:
sudo yum remove vim
卸载软件包及其依赖
sudo yum autoremove
-
搜索软件包
搜索软件包
sudo yum search [关键字]
示例:
sudo yum search vim
列出可用软件包
sudo yum list available
列出已安装软件包
sudo yum list installed
-
清理缓存
清理所有缓存
sudo yum clean all
清理旧的软件包缓存
sudo yum clean packages
清理元数据缓存
sudo yum clean metadata
-
查看软件包信息
查看软件包信息
sudo yum info [包名]
示例:
sudo yum info vim
查看已安装软件包的详细信息
sudo yum info installed [包名]
-
查看依赖关系
查看软件包的依赖关系
sudo yum deplist [包名]
示例:
sudo yum deplist vim
-
启用/禁用软件仓库
启用软件仓库
sudo yum-config-manager --enable [仓库名]
禁用软件仓库
sudo yum-config-manager --disable [仓库名]
-
查看软件仓库
列出所有软件仓库
sudo yum repolist
列出启用的软件仓库
sudo yum repolist enabled
列出禁用的软件仓库
sudo yum repolist disabled
-
重新生成缓存
重新生成软件仓库缓存
sudo yum makecache
微信小程序登录流程
-
前端获取临时登录凭证(
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);
}
},
}); -
后端调用微信接口换取用户身份标识
- 开发者服务器接收到前端发送的
code
后,调用微信的code2Session
接口,传入appid
、secret
、js_code
(即前端获取的code
)和grant_type
(固定值为authorization_code
),换取用户的openid
和session_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)}") - 开发者服务器接收到前端发送的
-
生成自定义登录态(
token
)- 后端根据
openid
查询或创建用户,并生成自定义登录态(如token
)。 - 将
token
返回给前端,前端将其存储在本地(如使用wx.setStorageSync
)。 - 在后续的业务请求中,前端需要将存储的
token
传递给后端,以便验证用户身份。
- 后端根据
-
登录态的维护
- 开发者需要在服务器端维护用户的登录态,例如设置
token
的有效期、续期机制等。 - 如果用户在多设备上登录,需要确保登录态的同步和安全性。
- 开发者需要在服务器端维护用户的登录态,例如设置
注意事项
-
session_key
的安全性session_key
是对用户数据进行加密签名的密钥,开发者服务器不应将其下发到小程序,也不应对外提供。- 开发者需要确保服务器的安全性,防止
session_key
泄露。
-
code
的使用限制code
是临时登录凭证,只能使用一次,且有效期为 5 分钟。
-
隐私保护
- 小程序获取用户信息时,需要遵循微信的隐私保护政策,确保用户数据的安全。
-
多端适配
- 如果需要适配多端应用(如 App 和小程序),可以使用微信提供的多端登录模板或自定义登录页,减少代码改动。
通过以上流程,开发者可以实现微信小程序的登录功能,并为用户提供便捷的身份验证和个性化服务。