大家好,我现在项目准备采用nodejs+expressjs + java, 也就是说,后台不动,前端从jsp脱离,使用nodejs来开发
但是现在有个棘手的问题,就是关于java的jsessionid维护的问题
我们知道,通常把html和java部署在一个war包下,那么浏览器用ajax调用后台的话,是不存在跨域的问题,当然也不存在会话保存的问题,jsessionid被保存在cookie里
现在我封装了一个nodejs的服务,使用http模板,用来请求后台,那么问题来了,登录后,后台返回的cookie里的jsessionid,不会被自动保存起来(不像浏览器里,会自动把jsessionid保存在cookie里)
也就是说,我使用http调用了login接口,下次再调用别的list接口时,还是会报401的问题
那么这种(NODE调用java,JAVA后台鉴权的情况)是如何解决呢?
这个大家伙有没有什么经验可以传授的?
P.S:也许有人不赞同我现在的架构,不过现在暂时不讨论这种前后端分离的做法好不好。
接口用session作鉴权?好吧。意思是node.js用来模拟登录后进行一系列的调用api吗?调用完了就可以抛弃登录状态?若是如此的话,看下request库,有cookie jaw功能,可以维护cookie状态
来自酷炫的 CNodeMD
关注这个。 这种情况下,node只是html渲染的,其他都应该是透传的。 也就是说,java返回的cookie你得写回到浏览器的cookie,然后请求java的时候带上。 程序自己维护cookie,很累工作量很大
回楼上,我是使用的hbs(handlebars的服务器),在node侧请求java,然后绑定数据到模板,最后发给浏览器,浏览器拿到手的就是一个完整的html,无需再次请求java的数据了
所以,维护会话的责任只能落在node侧了,因为浏览器只是请求node的url,本身不会发送ajax到java
具体看哪种适合你,1.node维护session,node和java是内网访问,java服务外网不可访问,这样调用java接口直接带上用户id直接操作。2.node端不维护session,java维护session并提供token,node只要带着token即可确定哪个用户,token时效性机制可以根据业务来定
跟前后端分离有半毛钱关系? 麻烦将标题前半段,前后端分离去掉. 直接提问session的保持问题或者服务器端用户数据共享的问题就行了. 标准的参考一下oauth, 想简单处理的话就在URL上带个SESSIONID就可以了. 看来在错误的前后端分离概念引导下导致一堆人进入了困境. 更是出现了奇葩的架构.