You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Web应用中Telegram Login Widget的登录会话过期时间设置为24小时?

调整Telegram Login Widget登录会话有效期为24小时

首先得明确:Telegram Login Widget本身并不会直接设置6个月有效期的Cookie——这个长有效期的Cookie其实是你的Web应用在用户登录成功后自行生成的会话凭证。要改成24小时,核心是在后端处理登录回调时,自定义会话Cookie的过期时间。

下面是具体的实现步骤:

1. 先理清Telegram登录的核心流程

当用户通过Widget完成Telegram授权后,Telegram会把用户信息(包含id、first_name、auth_date等)和验证哈希hash发送到你预先指定的auth_url回调地址。你的后端需要先验证这个请求的合法性,确认用户身份无误后,再创建应用自己的会话。

2. 在后端显式设置会话Cookie的有效期

验证通过后,别用框架默认的会话过期时间(很多框架默认会设成几个月),而是手动设置Cookie的max-age或expires参数为24小时。这里给几个常见后端技术栈的示例:

Node.js (Express)

// 先省略验证Telegram回调哈希的逻辑
app.post('/telegram-auth', (req, res) => {
  const validUser = { id: req.body.id, name: req.body.first_name };
  // 设置会话Cookie,有效期24小时(换算成毫秒)
  res.cookie('user_session', JSON.stringify(validUser), {
    maxAge: 86400 * 1000,
    httpOnly: true,
    secure: process.env.NODE_ENV === 'production' // 生产环境开HTTPS时启用
  });
  res.redirect('/dashboard');
});

Python (Django)

from django.http import HttpResponseRedirect
import json

def telegram_auth(request):
    # 省略Telegram请求合法性验证步骤
    user_data = {'id': request.POST.get('id'), 'name': request.POST.get('first_name')}
    response = HttpResponseRedirect('/dashboard')
    # 设置Cookie有效期为24小时(秒为单位)
    response.set_cookie(
        'user_session',
        json.dumps(user_data),
        max_age=86400,
        httponly=True,
        secure=request.is_secure()
    )
    return response

PHP

// 先完成Telegram回调请求的验证
$userData = [
    'id' => $_POST['id'],
    'name' => $_POST['first_name']
];
// 设置Cookie,有效期为当前时间+24小时
setcookie(
    'user_session',
    json_encode($userData),
    time() + 86400,
    '/',
    '',
    isset($_SERVER['HTTPS']),
    true // 开启httponly,提升安全性
);
header('Location: /dashboard');
exit;

3. 额外需要注意的点

  • 如果你用的是会话管理框架(比如Express的express-session、Django的django-sessions),需要修改框架的会话配置,把cookie.maxAge(或对应参数)设置为24小时。
  • 别忘了验证auth_date:Telegram返回的auth_date是授权的Unix时间戳,建议检查这个时间是否在最近15分钟内,防止重放攻击——这和会话Cookie有效期是分开的安全措施。
  • 生产环境下一定要开启httpOnly和secure属性,降低Cookie被窃取的风险。

内容的提问来源于stack exchange,提问作者Ramon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 19:47:27