Hacker News Android 客户端如何处理登录验证问题?

看代码研究了一下Hacker News Android 客户端如何处理登录验证问题。

登录流程

1. APP先用httpclient请求PC上的登录页面,拿到一堆html代码,然后从中解析中fnid, 应该是csrf token

2. 然后再把fnid, username, password 作为参数去POST PC上的登录form,服务端返回两个东西:

  a. cookie: httpclient的cookieStore上会多一个cookie(key=user)

  b. http response: 服务端返回一个字符串,称为userToken. 它的值其实就是上面说的cookie的值

3. 最后把userName和userToken存入Settings

登录后使用用户身份

使用用户身份时,会简单地把token当成cookie来用:把userToken从Settings中取出,构建好CookieStore, 然后塞到http client中,最后发出请求

API

Apache HttpClient 及其Cookie API  +  Android SharedPreference

评价

这个方案实际上是以Cookie作为客户端和服务端交互语义的载体。好处是,服务端基本上只需写一套以cookie为核心的认证代码,就可以同时满足PC和APP的需要。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.