react-native的cookie是什么原理?



  • react-native上有好用的cookie模块吗?

    有这么个库react-native-cookies

    我还没用过,以下是我的猜测:

    1、底层是调客户端的原生cookie功能?

    2、cookie是会写文件保存到机器上么?这样客户端进程杀掉了,下次启动时也能读到cookie里面的登录信息维持登录状态?

    3、android和ios原理一样吗?

    不知道我说的对不对,哪位用过可以说明下。



  • https://github.com/ryanmcdermott/react-native-login
    这个例子用的就是react-native-cookies,但是从他的代码来看,似乎cookie并不是保存在机器上,而是保存在server的HOME_URL中,每次启动应用,App这边都需要:
    CookieManager.get(HOME_URL, (cookie) => { .... } );
    来获取到HOME_URL上的cookie来判断是否在登录状态。
    不知道这种方式是不是科学的。



  • @natsu12 说:

    https://github.com/ryanmcdermott/react-native-login

    我看了下你这个。例子里面没有发送客户端的信息,那么服务端是怎么识别客户端呢。

    如果有发客户端的唯一信息(devicetoken,uuid,userid),完全由服务端去保存会话信息,理论上可行的,但是这样服务端的开发量也增加了。


    我目前的做法是首次登陆后,用react-native-storage保存session到本地。
    再次启动时先取出本地的session,然后拿session去服务端验证。

    这个方法很web哎,不知道移动端有没有更好的办法。



  • @kris
    这个例子里面是使用webView来展示一个登录页,这个登录页是服务器端写好的,然后用户填写好用户名密码之后提交,服务器端校验成功之后就会调用 res.cookie 方法,产生一个cookie:
    0_1470463656673_屏幕快照 2016-08-06 下午2.06.05.png

    然后每次应用启动的时候,App这边调用 CookieManager.get 方法来获取cookie:
    0_1470463926200_屏幕快照 2016-08-06 下午2.10.02.png

    这个 CookieManager.get 方法的源码:
    0_1470463967392_屏幕快照 2016-08-06 下午2.12.33.png

    因为我对express和objective-c都不熟悉,所以我有几个问题:

    1. 服务器端使用的 res.cookie 方法,产生的cookie到底是存放在哪里的?
    2. App这边调用 CookieManager.get 方法,到底是从哪里获取cookie的?

    我一开始看到这两个方法参数都有URL,我误以为是cookie存到了服务器端的某个URL上,但是看了objective-c的源码之后发现好像并不是这么一回事,看上去像是以键值对的形式存在了本地,然后URL只是作为存取cookie的key而已。

    如果cookie是在本地的,那么是不是在这个例子中,每次启动应用直接就看是否能取到cookie,如果是就为登录状态,好像并没有拿这个cookie到服务端再去验证一次,这样做是不是合理的我也不知道。



  • @natsu12 他这种cookie是依托于内置浏览器保存的吧,浏览器自己去处理cookie的读和存,你当成浏览器就容易理解了。


    我这里针对的是app的登录,没有涉及到网页。



  • @kris
    应该不是内置浏览器,我用的原生App,按着这个例子把它对 react-native-cookies 的用法如法炮制了一遍,发现也是可以使用的,反正就是这个cookie到底存在哪让我有点不能理解。


登录后回复