这次给大家带来nodejs怎样通过jsonp来实现单点登录demo,nodejs通过jsonp来实现单点登录demo的注意事项有哪些,下面就是实战案例,一起来看一下。
说明:使用redis作为session的存储方式
使用引入sso服务器中的动态js地址来获取cookie
应用服务器获取单点服务器提供的特殊标识比如sessionId或其他后,
通过标识直接去往redis中去查询,或是提交(通过rpc)给单点服务器去查询获取登录信息结果
服务器代码示例
const Koa = require('koa');const Router = require('koa-router');const bodyParser = require('koa-bodyparser');const app = new Koa(); const router = new Router(); app.use(bodyParser());//====session s=====var session = require('koa-generic-session');var redisStore = require('koa-redis');app.keys = ['keys', 'c29tZSBzZWNyZXQgaHVycg'];app.use(session({//配置session store: redisStore({}), cookie: { path: '/', httpOnly: true, maxAge: 1 * 60 * 60 * 1000, rewrite: true, signed: true }}));//====session e=====router.get('/login', function* (next) {//登录页面 this.session=null;//删除cookie this.body=`
登录后复制 `;}).post(‘/login’, function* (next) {//提交登录数据 var sinfo = JSON.stringify(this.request.body);//0){ this.body=`var kosid=’${this.sessionId}’;`;//示例写入sessionId,也就是存入到redis的key }else{ this.body=`window.location.href=”http://sso.com/login”;`; }});app.use(router.routes()).use(router.allowedMethods());app.listen(8087);
应用代码示例:
const Koa = require('koa');const Router = require('koa-router');const bodyParser = require('koa-bodyparser');const app = new Koa(); const router = new Router(); app.use(bodyParser());//====session s=====可以直接用普通session app.keys = ['c29tZSBzZWNyZXQgaHVycg%3D%3D'];var CONFIG = { key: 'koa:sess', /** (string) cookie key (default is koa:sess) */ maxAge: 2000, /** (number) maxAge in ms (default is 1 days) */ overwrite: true, /** (boolean) can overwrite or not (default true) */ httpOnly: true, /** (boolean) httpOnly or not (default true) */ signed: true, /** (boolean) signed or not (default true) */};app.use(session(CONFIG, app));//====session e=====/*//====session s===== 或者一样吧var session = require('koa-generic-session');var redisStore = require('koa-redis');app.keys = ['keys', 'c29tZSBzZWNyZXQgaHVycg'];app.use(session({//配置session store: redisStore({}), cookie: { path: '/', httpOnly: true, maxAge: 1 * 60 * 60 * 1000, rewrite: true, signed: true }}));//====session e=====*/router.get('/', function* (next) { this.body=` $.cookie("sid",kosid); if(kosid){ document.write('key:',kosid); }else{ document.write('未登录'); } console.log("this",document.cookie); `; return;});app.use(router.routes()).use(router.allowedMethods());app.listen(8088);
登录后复制
windows系统下修改hosts文件
(一般在C:WindowsSystem32driversetc下)
添加:
127.0.0.1 sso.com127.0.0.1 testsso.com
登录后复制
浏览器访问:
http://sso.com:8087http://testsso.com:8088
登录后复制
相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!
相关阅读:
python3与JS有什么不同
python3与JS有什么不同
python3与JS有什么不同
以上就是nodejs怎样通过jsonp来实现单点登录Demo的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2783937.html