• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 客户端和服务端如何使用Token和Session,tokensession

客户端和服务端如何使用Token和Session,tokensession

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了tokensession,session token不存在,session token in url,cookie session token,token客户等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

客户端和服务端如何使用Token和Session,tokensession


一、我们先解释一下他的含义:
    1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
    2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
    3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。


二、如何使用Token?。
1、用设备号/设备mac地址作为Token(推荐)
    客户端:客户端在登录的时候获取设备的设备号/mac地址,并将其作为参数传递到服务端。
    服务端:服务端接收到该参数后,便用一个变量来接收同时将其作为Token保存在数据库,并将该Token设置到session中,客户端每次请求的时候都要统一拦截,并将客户端传递的token和服务器端session中的token进行对比,如果相同则放行,不同则拒绝。
    分析:此刻客户端和服务器端就统一了一个唯一的标识Token,而且保证了每一个设备拥有了一个唯一的会话。该方法的缺点是客户端需要带设备号/mac地址作为参数传递,而且服务器端还需要保存;优点是客户端不需重新登录,只要登录一次以后一直可以使用,至于超时的问题是有服务器这边来处理,如何处理?若服务器的Token超时后,服务器只需将客户端传递的Token向数据库中查询,同时并赋值给变量Token,如此,Token的超时又重新计时。
2、用session值作为Token
    客户端:客户端只需携带用户名和密码登陆即可。
    客户端:客户端接收到用户名和密码后并判断,如果正确了就将本地获取sessionID作为Token返回给客户端,客户端以后只需带上请求数据即可。
    分析:这种方式使用的好处是方便,不用存储数据,但是缺点就是当session过期后,客户端必须重新登录才能进行访问数据。

 

三、使用过程中出现的问题以及解决方案?

    刚才我们轻松介绍了Token的两种使用方式,但是在使用过程中我们还出现各种问题,Token第一种方法中我们隐藏了一个在网络不好或者并发请求时会导致多次重复提交数据的问题。

    该问题的解决方案:将session和Token套用,如此便可解决,如何套用呢?请看这段解释:

wKioL1QX85nCkJ5qAABWcdNyC0g731.png

     这就是解决重复提交的方案。

/**
 * 用户登录,将私有token保存
 * 
 * @param appContext
 * @param username
 * @param password
 * @return GitlabUser用户信息
 * @throws IOException
 */
public static User login(AppContext appContext, String userEmail,
        String password) throws AppException {
    String urlString = URLs.LOGIN_HTTPS;
    Session session = getHttpRequestor()
            .init(appContext, HTTPRequestor.POST_METHOD, urlString)
            .with("email", userEmail)
            .with("password", password)
            .to(Session.class);
    // 保存用户的私有token
    if (session != null && session.get_privateToken() != null) {
        String token = CyptoUtils.encode(GITOSC_PRIVATE_TOKEN, session.get_privateToken());
        appContext.setProperty(PRIVATE_TOKEN, token);
    }
    return session;
}

  

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 客户端和服务端如何使用Token和Session,tokensession

相关文章

  • 2017-05-26VS2015墙内创建ionic2 【利用nrm更换源,完美!】,vs2015ionic2
  • 2017-05-222.4.3 Date & Time组件(下)
  • 2017-05-26Android常用命令行-ADB,android-adb
  • 2017-05-26android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明
  • 2017-05-26【方法总结】创建、读取、删除文件相关操作,读取删除文件
  • 2017-05-26EditText 关于控件的一些技巧
  • 2017-05-26Android中使用开源框架citypickerview实现省市区三级联动选择,
  • 2017-05-26错误提示”void is an invalid type for the variable“,invalidvariable
  • 2017-05-26Android开发:内存机制分析——堆和栈
  • 2017-05-26Android View体系(一)视图坐标系

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Atitit.android js 的键盘按键检测Back键Home键和Menu键事件,atitit.androidmenu
    • 几种执行shell的方法
    • LocationManager使用细节,locationmanager
    • Android开发学习——android存储,android开发存储
    • Android 数据库操作,android数据库操作
    • Android Studio Ndk 编程
    • Android pm命令详解
    • 继承ViewGroup学习onMeasure()和onLayout()方法,viewgrouponmeasure
    • android handler传递消息机制,androidhandler
    • Java字节流在Android中的使用,java字节流android

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有