开发WordPress API移动端应用:每次请求发送认证信息是否为最佳实践?
WordPress REST API 移动端认证指南:不用每次传用户名密码
结论先行:完全不用每次请求都发用户名密码
WordPress REST API提供了多种持久化认证方案,只需要完成一次认证拿到凭证,后续用这个凭证就能保持登录状态,不用反复提交账号密码。
几种实用的实现方式
1. JWT 认证(移动端首选)
这是目前移动端最常用的方案,流程简单且安全:
- 先安装「JWT Authentication for WP REST API」插件,然后在
wp-config.php中添加配置(生成一个随机复杂密钥):define('JWT_AUTH_SECRET_KEY', '你的随机复杂密钥'); define('JWT_AUTH_CORS_ENABLE', true); - 第一次请求调用
/wp-json/jwt-auth/v1/token接口,POST传递username和password,接口会返回token和过期时间 - 之后所有需要认证的API请求,在HTTP请求头里添加:
Authorization: Bearer {你拿到的token} - 提醒:token会过期,要么在过期前调用刷新接口续期,要么在APP里记录过期时间,到期自动重新获取新token
2. Cookie 认证(适合和WP站点同域的场景)
如果你的APP和WP网站是同域名(比如APP访问yourdomain.com/api),可以用Cookie认证:
- 第一次请求先获取nonce:调用
/wp-json/wp/v2/users/me的OPTIONS方法,从响应头里提取X-WP-Nonce - 然后POST请求
/wp-json/wp/v2/users/me,带上username、password、wp_rest: true和nonce: 刚才拿到的值 - 服务器会返回Set-Cookie头,APP要把这些Cookie存起来,后续请求自动携带Cookie即可
- 注意:移动端处理Cookie要适配各自平台的网络库,跨域场景下还要在WP后台配置CORS允许携带Cookie
3. 应用密码(WP官方原生支持,适合简单场景)
WP自带的应用密码功能,适合不想装插件的情况:
- 先给用户开启双因素认证,然后在WP后台用户编辑页生成一个「应用密码」
- 每次请求用Basic Auth:把
用户名:应用密码做Base64编码,放在请求头Authorization: Basic {编码后的字符串}里 - 提醒:应用密码是固定凭证,APP里要存在安全存储中,别用明文本地存储
安全必看
- 所有请求必须使用HTTPS,防止凭证被截获
- 移动端存储token或Cookie,要用系统提供的安全存储(比如iOS的Keychain、Android的EncryptedSharedPreferences),避免明文存储
- 定期清理过期凭证,减少无效请求
- JWT的密钥要设置得复杂且保密,不可泄露
内容的提问来源于stack exchange,提问作者Sarah Tammam
相关产品推荐
相关产品推荐

