使用Cookies和base64在多应用共享会话信息

Vivek在工作中遇到了这样的场景:需要在Grails应用和Wordpress中共享一些用户信息,即在Grails应用中登录,在Wordpress页面的header中显示出用户名。该怎么做呢?Cookie! Vivek在博文给出了实现步骤。

思路是在Grails应用中将用户信息放入Cookie,在Wordpress中使用javascript将Cookie信息读出。具体步骤如下:

  • 将servlet-api-*.jar放入Grails应用的lib目录下;
  • 将如下代码添加至合适位置:
  • import javax.servlet.http.*
    ......
    Cookie cookie = new Cookie('userNameCookie', fullname);
    cookie.setVersion(-1)  // Cookie的版本
    cookie.path = "/"
    cookie.maxAge = 30 * 60 * 60; //Cookie的生命周期
    response.addCookie(cookie)
  • 分别下载jQueryjQuery cookie pluginjQuery Base 64 Functions plugin放入到Wordpress的相关目录;
  • 在Wordpress的javascript中使用如下代码获取Cookie:
  • jQuery.cookie('userNameCookie')
    
  • 如果fullname带有unicode(比如中文、韩文、日文),就需要将fullname进行Base64编码,同时获取时需要解码:
  • fullname.bytes.encodeBase64().toString()
    ......
    jQuery.base64Decode(jQuery.cookie('userNameCookie'));
    

Vivek提供的方法不仅限于Grails<-->Wordpress,任何两个或者多个应用共享信息都可以借鉴此法。当然,共享的信息不能太多哦!

By huwh - Posted on 12 八月 2010