当前位置:首页 > PHP

android token php实现

2026-02-15 15:46:30PHP

实现 Android 与 PHP 的 Token 验证

Token 验证流程 Android 客户端向 PHP 服务器发起登录请求,服务器验证成功后生成 Token 并返回给客户端。客户端在后续请求中携带该 Token,服务器验证 Token 有效性后返回数据。

PHP 服务器端实现

android token php实现

生成 Token 的 PHP 代码示例:

<?php
function generateToken($userId) {
    $secretKey = 'your_secret_key'; // 密钥
    $header = base64_encode(json_encode(['alg' => 'HS256', 'typ' => 'JWT']));
    $payload = base64_encode(json_encode(['user_id' => $userId, 'exp' => time() + 3600])); // 1小时过期
    $signature = hash_hmac('sha256', "$header.$payload", $secretKey);
    return "$header.$payload.$signature";
}

function validateToken($token) {
    $secretKey = 'your_secret_key';
    $parts = explode('.', $token);
    if (count($parts) !== 3) return false;

    $signature = hash_hmac('sha256', "$parts[0].$parts[1]", $secretKey);
    if ($signature !== $parts[2]) return false;

    $payload = json_decode(base64_decode($parts[1]), true);
    if (time() > $payload['exp']) return false;

    return $payload['user_id'];
}
?>

Android 客户端实现

android token php实现

使用 Retrofit 发送 Token 的示例:

// 定义接口
public interface ApiService {
    @POST("login")
    Call<LoginResponse> login(@Body LoginRequest request);

    @GET("protected")
    Call<DataResponse> getProtectedData(@Header("Authorization") String token);
}

// 登录并保存 Token
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://your-php-server.com/")
    .build();

ApiService api = retrofit.create(ApiService.class);
api.login(new LoginRequest(username, password)).enqueue(new Callback<LoginResponse>() {
    @Override
    public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
        if (response.isSuccessful()) {
            String token = response.body().getToken();
            // 保存 Token 到 SharedPreferences
        }
    }
});

// 使用 Token 请求受保护数据
String savedToken = getTokenFromPreferences(); // 从 SharedPreferences 获取
api.getProtectedData("Bearer " + savedToken).enqueue(...);

安全注意事项 Token 应通过 HTTPS 传输防止中间人攻击。服务器应设置合理的 Token 过期时间,客户端需要处理 Token 过期情况并重新登录。敏感操作应要求二次验证。

优化建议 可以考虑使用 Refresh Token 机制延长会话有效期。对于高安全需求场景,可以结合设备指纹等额外验证因素。服务器端应实现 Token 黑名单功能以支持主动注销。

标签: androidtoken
分享给朋友:

相关文章

vue实现登录保存token

vue实现登录保存token

Vue 中实现登录保存 Token 使用 localStorage 保存 Token 登录成功后,将 Token 存储在 localStorage 中,便于页面刷新后仍能保持登录状态。 // 登录…

vue实现登录加token

vue实现登录加token

Vue 实现登录加 Token 在 Vue 中实现登录功能并管理 Token,通常需要结合后端 API 和前端存储机制。以下是实现步骤: 安装 axios 使用 axios 发送 HTTP 请求到…

react如何感知token变化了

react如何感知token变化了

监听Token变化的常见方法 在React中,可以通过以下几种方式感知Token的变化: 使用Context API 创建一个AuthContext来管理Token状态,并通过Provider将To…

token php实现

token php实现

Token 在 PHP 中的实现方法 生成 Token 使用 bin2hex 和 random_bytes 生成安全的随机 Token: $token = bin2hex(random_bytes(…

vue 实现token 登录

vue 实现token 登录

Vue 实现 Token 登录 用户登录与 Token 获取 在登录页面,用户提交表单后,向后端发送登录请求。后端验证成功后返回 Token(通常为 JWT)。 axios.post('/api/…

react如何获取token

react如何获取token

获取 Token 的方法 在 React 中获取 Token 通常涉及与后端 API 的交互(如登录验证)或从本地存储(如 localStorage、sessionStorage)中读取。以下是几种常…