什么是token

token(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地。在以后的网络请求时,客户端先查询本地的token,如果有则直接使用此令牌进行网络请求,没有则提示未登录,转到登陆注册界面。
此外,还可以在服务端或者客户端添加过期判别机制。
token的作用
token可以显著减少服务端对用户表的查询,同时使用户不必每次都登陆,提高了系统的可用性与健壮性。
使用SharedPreferences保存token
获取token并保存
NetWorks.regPost(user, password, email, tel, new Observer<User>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.e("LoginActivity",e.getLocalizedMessage()+"--"+e.getMessage());
}
@Override
public void onNext(User user) {
if(user.getmMessage().equals("success")){
MainActivity.instance.finish();//结束原来的主页面
Toast.makeText(getApplicationContext(),"注册成功",Toast.LENGTH_SHORT).show();
//token保存到本地
SharedPreferences sp = getSharedPreferences("loginToken", 0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("userId",user.getmUserId());
editor.putString("userName",user.getmUserName());
editor.putString("phone",user.getmPhone());
editor.putString("email",user.getmEmail());
editor.putString("headImageUrl",user.getmHeadImageUrl());
editor.commit();
Intent i = new Intent(RegActivity.this,MainActivity.class);
startActivity(i);
finish();
}else{
Toast.makeText(getApplicationContext(),"注册失败"+user.getmMessage(),Toast.LENGTH_SHORT).show();
}
}
});
我使用的是retrofit框架进行网络请求,上文是实现注册功能的函数,在onNext()函数中获取服务端返回的结果,这个框架自动把返回的json数据解析为对应的类对象(即上文中的user对象)。因为token的本质是唯一的字符串,userId满足这个要求,因为userId是由服务端生成且唯一,故我将userId作为token使用。
进行网络请求前查询本地token
比如点击侧边栏的头像,如果未登录则需要跳转到登陆界面,已经登陆则进入个人信息界面。这时候,就需要查询本地token进行判别。
private void initData() {
sp = getSharedPreferences("loginToken", 0);
name = sp.getString("userId", null);
userName = sp.getString("userName", null);
email = sp.getString("email", null);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.imageView:
if (name == null) {
Intent i = new Intent(MainActivity.this, LoginActivity.class);
startActivity(i);
} else {
Log.d("用户ID", name);
Intent i = new Intent(MainActivity.this, PersonInfoActivity.class);
startActivity(i);
}
break;
}
}
备注
在此例中,我使用userId作为token,但并不建议这么做,虽然这样很简单。因为userId显然无法判别是否过期,如果我们需要实现token过期的判别,则可以采用将userId与日期拼接的方式。
此外,为了安全起见,不要在客户端生成token。
以上所述是小编给大家介绍的Android使用token维持登陆状态的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 登陆状态
# 登陆token
# Android实现带有记住密码功能的登陆界面
# Android调用微信登陆、分享、支付
# Android开发中实现用户注册和登陆的代码实例分享
# Android实现弹出登陆框的方案
# Android仿QQ登陆窗口实现原理
# 服务端
# 客户端
# 令牌
# 小编
# 的是
# 还可以
# 在此
# 是由
# 可用性
# 转到
# 给大家
# 很简单
# 我将
# 这么做
# 将此
# 每次都
# 则可
# 个人信息
# 所述
# 给我留言
相关文章:
建站之星代理如何优化在线客服效率?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
建站之星导航配置指南:自助建站与SEO优化全解析
成都响应式网站开发,dw怎么把手机适应页面变成网页?
建站上市公司网站建设方案与SEO优化服务定制指南
如何在IIS中新建站点并解决端口绑定冲突?
简历在线制作网站免费版,如何创建个人简历?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
如何在阿里云ECS服务器部署织梦CMS网站?
如何通过服务器快速搭建网站?完整步骤解析
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在阿里云部署织梦网站?
如何快速上传自定义模板至建站之星?
Python文件管理规范_工程实践说明【指导】
如何在香港免费服务器上快速搭建网站?
如何彻底卸载建站之星软件?
济南网站制作的价格,历城一职专官方网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
名字制作网站免费,所有小说网站的名字?
如何快速生成可下载的建站源码工具?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何在Golang中指定模块版本_使用go.mod控制版本号
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
定制建站价位费用解析与套餐推荐全攻略
IOS倒计时设置UIButton标题title的抖动问题
青岛网站建设如何选择本地服务器?
建站之星如何取消后台验证码生成?
如何生成腾讯云建站专用兑换码?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
兔展官网 在线制作,怎样制作微信请帖?
建站VPS推荐:2025年高性能服务器配置指南
如何在橙子建站上传落地页?操作指南详解
建站之星如何实现五合一智能建站与营销推广?
Android滚轮选择时间控件使用详解
南京网站制作费用,南京远驱官方网站?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
营销式网站制作方案,销售哪个网站招聘效果最好?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
宝塔面板如何快速创建新站点?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
如何基于云服务器快速搭建网站及云盘系统?
制作网页的网站有哪些,电脑上怎么做网页?
网站制作公司,橙子建站是合法的吗?
,网站推广常用方法?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。