SSO单点登陆和jsonp跨域请求

单点登陆逻辑

登录的业务流程

拿到用户名密码,判断正确之后生成token,作为key和用户信息(value)一起保存到redis里面,然后把token返回出来在表现层再写入cookie,就算登陆成功了

(redis还要设置过期时间)

 

判断登陆和取用户信息:

取出cookietoken,用它去redis里查询用户信息,如果存在就是没有过期即为登陆状态(否则需要重新登陆),同时返回用户信息

(redis需重置下过期时间)

 jsonp跨域请求

通过token查询用户数据:

 方案:当页面加载完成后使用jstoken的数据,使用ajax请求查询用户信息。(写一个jstoken用取得用户信息,每个页面一加载都调用这个js就好)

 

问题:sso表现层查询得到用户信息,Sso.e3.com localhost:8088。但需要在商城门户(另一个表现层)的页面里显示用户信息,www.e3.com localhost:8082。使用ajax请求跨域了。这就好比一个工程里的页面不从自己的controller里取数据,要从另一个工程的controller里取数据。

 

Js不可以跨域请求数据。

什么是跨域:

1、域名不同

2、域名相同端口不同。

解决js的跨域问题可以使用jsonp

Jsonp不是新技术,跨域的解决方案。使用js的特性绕过跨域请求。Js可以跨域加载js文件。

 

1.1 Jsonp原理

 

1.2 Json实现

1.2.1 客户端

使用jQuery

 

1.2.2 服务端

1、接收callback参数,取回调的js的方法名。

2、业务逻辑处理。

3、响应结果,拼接一个js语句。

 

 

转载于:https://www.cnblogs.com/fengnan/p/9498856.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值