网络认证令牌是什么
你在登录某些网站或APP时,可能遇到过“扫码登录”“手机验证码”“第三方授权”这些操作。背后的支撑技术之一,就是网络认证令牌(Authentication Token)。它不像密码那样是固定字符,而是一串动态生成的凭证,用来证明“你确实是那个合法用户”。
比如你用微信登录一个论坛,微信就会给论坛发一个临时令牌,表示“这个人已通过验证”,而不需要把你的微信密码交给论坛。
常见的令牌类型
最常见的是JWT(JSON Web Token),结构为三段式:头部、载荷、签名。它通常长这样:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c这段字符串里包含了用户信息和有效期,服务器通过密钥验证其真实性,确认无误后允许访问资源。
API调用中的使用方式
很多后台接口要求在请求头中携带令牌。例如你开发一个前端页面,需要从服务器拉取用户数据,就要在HTTP请求里加上:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxxx服务器收到请求后,解析这个令牌,判断是否过期、是否被篡改,再决定是否返回数据。这种机制比每次传用户名密码安全得多。
网页登录的实际流程
你在一个网站输入账号密码后,服务器验证成功,会返回一个token。浏览器通常会把它存进localStorage或Cookie。之后每次请求,前端代码自动把这个token附带发出。比如用JavaScript发送请求时:
fetch('/api/user', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('token')
}
})只要token有效,你就一直保持登录状态。关闭浏览器后,如果token没保存持久化,下次就得重新登录。
移动端的处理差异
手机APP通常不会用Cookie,而是把token存在本地存储中。当你切换网络或重启应用,程序会检查是否有未过期的token,有的话就直接进入主页,省去重复登录的麻烦。但一旦token失效,就必须重新走登录流程,并获取新令牌。
有些APP还会采用刷新令牌(Refresh Token)机制。主token较短时效(如2小时),刷新token较长(如7天)。当主token过期,用刷新token去换一个新的,避免频繁输入密码。
安全使用要点
别把token暴露在前端代码里,尤其是写死在JavaScript文件中。也不要在URL参数中传递,容易被日志记录泄露。HTTPS是必须的,否则中间人可以截获传输中的token。
服务器端要设置合理的过期时间,敏感操作建议二次验证。用户退出登录时,前端清除存储的token,后端最好也将该token加入黑名单,防止被继续使用。