用代理类实现Cookie跨站共享

其实Cookie跨站点共享是很简单的,只要两个站点在同一级目录底下,则其中一个站点的COOKIE就能被另一个站点所引用.即它们的DOMAIN属性是一样的.比如我F盘上有两个站点,一个是用户系统,一个是新闻系统.我想实现就是在用户系统登录之后不用再重新登录新闻系统就能直接进新闻系统.即常说的单点登录.

用户系统中有个WEB服务,服务里有个验证用户登录的方法.使用该方法.当用户登录成功后,就创建一个COOKIE保存用户名和密码.然后新闻系统中就可以直接访问这个COOKIE.因为它们属于同一个域.

最主要的地方来了,虽然可以访问这个COOKIE,但是要我们要清楚一点,COOKIE是在客户端保存的,即可以从客户端修改COOKIE中的内容,所以服务器端始终得对客户端传递来的COOKIE持怀疑态度,不能相信这个COOKIE一定是服务器端原始传送过去的COOKIE.所以要对这个COOKIE进行验证.

可能上面说的很不清楚,我再举个例子.就像CSDN一样,你在登录的时候可以选择保存两周不用重复登录.你不用再输入用户名和密码登录了,但是服务器端并不是不验证你的用户名和密码了,它还是要验证用户名和密码的.而只不过改成读取你COOKIE文件里的用户名和密码了.如果你手动修改保存在你硬盘上的COOKIE中的用户名和密码的话,如果不正确的话,还是要失败的.

下面来讲下怎么对COOKIE进行验证.如果是在用户系统中对COOKIE中的用户名和密码进行验证那是很简单的.因为用户系统的数据库中存在一个用户表,可以直接读取COOKIE中的用户名和密码然后去数据库中进行匹配.

而现在的问题是要在新闻系统中验证COOKIE中的用户名和密码,而新闻系统中根本没有用户表.所有用户都是通过用户系统单点登录的.

这时候关键来了,还记得前面说的用户系统中的那个WEB服务吗?没错,就是它了,我们在新闻系统的站点目录上点击右键,选择添加WEB引用,然后选择这个WEB服务,系统就会自动给这个WEB服务生成代理类.然后我们就可以直接使用用户系统的这个WEB服务里的验证用户登录的方法了. 

阅读更多
个人分类: cookies and session
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭