首页 > ionic开发app 对于用户登录信息的存储用怎样的方案比较好

ionic开发app 对于用户登录信息的存储用怎样的方案比较好

第一次接触ionic开发,求教基础问题。。。
登陆的时候吧用户信息存在localstorage里的话,服务器怎么判断用户再不在登陆状态,然后请求接口的时候拿到的数据就是这个用户的对应的数据,web端是session,手机上一样么。。。有没有过来人,说说解决方案?谢谢QAQ


个人理解 ionic = angularjs+cordova。
angularjs1.x版本的用户认证文章请参看这里
angularjs 用户认证解决方案


因为在 app 中保持 session 很烦而且浪费,所以 app 通常使用 token based authentication (太长了,后面请允许我叫它 TBA :-)来做认证。

ionic 使用前端的技术栈,但思路得按 app 的来。简单答的话你可以搜索 json web token 作为一个起点。

为什么说 session 在 app 上不好用

我们都知道 http 是无状态的,而 session 却为浏览器与服务器提供了保持“会话”的能力。而这种好处是有代价的。我真是爱死这句话了。 session 的原理就不用我再多嘴了,总之就是浏览器与服务器需要做一些额外的工作,用于保证一次会话里的所有连接符合某种协议,才能达到效果。

传统网站里,这部分额外的工作是由浏览器承担的。浏览器会完成所有的脏活累活,前端只管用就好了。但在 app 里面,谁来管这些事情?难道说每一个需要访问鉴权 api 的 app ,哪怕再小的需要,都得用上一个小浏览器?这种方案看上去并不能接受。

既然保持状态的代价不能接受,那不保持好了。让 http 回到它最原始的样子。现在问题变成了:没有状态的情况下如何鉴权?答案倒也简单:每次连接都带上用户名密码。。。

token based authentication

听起来很糟糕,也确实不能这样做。。。这就是 BAT TBA 派上用场的时候了。我们只向服务器出示一次用户名密码,服务器认证了我们的身份之后,生成一个字符串“令牌”(token)。 app 拿到令牌后,访问每一个 api 都附带上令牌,而 api 看到令牌后,就会知道你是有权限访问它的,进而返回数据。

这样就避免了多次传递用户密码这种敏感信息,而这个 token 的存储位置就很多选择了, ionic 的话还可以用到浏览器的 window.localStorage

继续设想另外一个情况:

有个你在用的网站 A 想要拿到你存在网站 B 上的头像。
你当然不会愿意告诉它你在 B 上的密码
所以你找到 B ,跟它说如果 A 来跟你要我的头像,就给他,别的不可以给
B 给你一串授权码说没问题,但我不认识 A ,它带着这个授权码过来我才知道
A 拿着授权码到 B 这里要东西
B 交给 A 一个令牌,让它到管头像的 api 那里取头像
A 取完头像还想顺便还想要你的号码,但令牌经对照后并没有获取手机号的权限,被 api 严辞拒绝。。。

这就是一次 OAuth 2.0 的授权过程,表现出了 TBA 的另一个好处,就是允许你在不泄漏自己的用户名密码的情况下,也可以将一部分自己的权限交给别人。

跑题有点远了就扯到这。。。希望能对题主有帮助


客户端叫session 服务端叫cookie. 一般在调登入的接口的时候后端的同学们会给我们传一个token 可以当做身份验证的令牌..我们可以把这个token存起来 因为app是不能刷新的 存服务里 或者localstroge里都可以啦,然后就是在拦截器里给每个请求的头部都带上这个token 后端通过检查这个token来获得用户信息

【热门文章】
【热门文章】