如何实现移动端登录服务

徐牛 发布于 2014/11/28 10:07
阅读 2K+
收藏 3

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

现系统的登录模块采用以前的后端以session为token的方式。

  1. 在手机端输入用户名或者密码似乎不太方便,类似qq,微信这种似乎登陆一次就不用再登录了,该功能是如何实现的?
    我自己考虑有两种实现方式,
    第一种简单粗暴将session或者说token超时时间设置为无限长。
    第二种就是保存用户名密码在本地。

  2. 因为Java Web中shiro或者Spring secure这些库就是提供以session这种方式实现授权的。请问有没有其他方式可以简单的实现RESTFul 接口的认证模块

  3. 作为移动应用的后端使用session这种方式有那种优缺点?作为web方式的话session是否还是当前的最佳实践?
加载中
1
William
William

一般用的是oauth2方式, 后台返回token时, 可自行设置token过期时间, 通常来说, 也会附带一个refresh_token字段. 当你上面获取的token过期时, 可refresh_token重新获取token而不用再次验证用户名及密码.

可参考下面:

http://tools.ietf.org/html/rfc6749

徐牛
徐牛
我一直记得OAuth是一种用户可以不告知服务A其在服务B上的用户名和密码却可以在服务A上安全的使用服务B的一种认证方式? 用OAuth2是基于哪方面考虑的?是因为有refresh_token还是OAuth已经不单单局限于安全使用第三方资源这种形式了呢?
1
lotern
lotern

http://my.oschina.net/kaster/blog/130861

参考本篇,和其他相关文章

客户端一般不会缓存密码一类的东西,我们是缓存 openid和token

lotern
lotern
回复 @徐牛 : openid和TokenKey时效很长,未来客户端无须登录,直接调用响应的接口,服务端会验签,无效会返回登录超时。
徐牛
徐牛
文章很好,但是没有讨论到如何避免需要经常登录的问题? 是tokenKey会长期有效吗?
1
lotern
lotern

客户端本身网络稳定性差,有些Session框架在网络切换后,Session失效。

我们没有使用传统框架的Session机制,主要是和后台分布式的部署有关系。

接口方面,我们就是使用restful请求接口,接入层的分发服务器并不验证Session,只负责分发,真正的后台接口会自己来验证Session的有效性,对于分布在不同设备和进程的应用,使用Redis来缓存Session信息。

徐牛
徐牛
自己做是最终方案,而自己做授权系统这块要设计到加密算法,session,角色管理等等,我们这边开发力量不够。所以想看看有没有合适的框架。 不知道Srping secure等有没有这方面的优化。
0
魏涛
魏涛

stateless

0
hahashiwo
hahashiwo

类似的问题我也问过

作为第三方登陆,基本上是遵循oauth2

作为自己的用户登陆,我方案是结合两者优点,用token加用户名,不用session,哦我做的是ios开发,安卓不知道,还有人告诉我用心跳包的方式保持类似session的功能,因为移动端不知道什么时候就离开了,每隔多少时间发个包,表明存在,我觉得太麻烦了呵呵。

徐牛
徐牛
我感觉Session是一种比较简化的token不管是你自己用token还是session都绕不过我提的问题。 心跳是在长连接中才需要考虑的吧。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部