nodejs怎样通过jsonp来实现单点登录Demo
这次给大家带来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=` <form action="/login" method="post"> <p>用户名: <input type="text" name="name" /></p> <p>密码: <input type="text" name="pwd" /></p> <input type="submit" value="提交" /> </form> `; }).post('/login', function* (next) {//提交登录数据 var sinfo = JSON.stringify(this.request.body);//<==获取post数据 this.session.sinfo =sinfo;//<===存入session,模拟登录成功 this.redirect('/');//<===跳转向到你要的页面}); router.get('/', function* (next) { if(this.session&&this.session.sinfo){//判断是否有cookie this.body=`已登录 `; }else{ this.redirect('/login');//<===跳转向到你要的页面 } }); router.get('/sso.js', function* (next) { //动态js if(this.session&&this.session.sinfo&&this.session.sinfo.length>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=` <script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script type="text/javascript" src="http://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> <script src='http://sso.com:8087/sso.js'></script> <script> $.cookie("sid",kosid); if(kosid){ document.write('key:',kosid); }else{ document.write('未登录'); } console.log("this",document.cookie); </script>`; return; }); app.use(router.routes()).use(router.allowedMethods()); app.listen(8088);
windows系统下修改hosts文件
(一般在C:\Windows\System32\drivers\etc下)
添加:
127.0.0.1 sso.com127.0.0.1 testsso.com
浏览器访问:
http://sso.com:8087 http://testsso.com:8088
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
相关阅读:
Atas ialah kandungan terperinci nodejs怎样通过jsonp来实现单点登录Demo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Node.js boleh digunakan sebagai rangka kerja bahagian belakang kerana ia menawarkan ciri seperti prestasi tinggi, kebolehskalaan, sokongan merentas platform, ekosistem yang kaya dan kemudahan pembangunan.

Untuk menyambung ke pangkalan data MySQL, anda perlu mengikuti langkah berikut: Pasang pemacu mysql2. Gunakan mysql2.createConnection() untuk mencipta objek sambungan yang mengandungi alamat hos, port, nama pengguna, kata laluan dan nama pangkalan data. Gunakan connection.query() untuk melaksanakan pertanyaan. Akhir sekali gunakan connection.end() untuk menamatkan sambungan.

Terdapat dua fail berkaitan npm dalam direktori pemasangan Node.js: npm dan npm.cmd Perbezaannya adalah seperti berikut: sambungan berbeza: npm ialah fail boleh laku dan npm.cmd ialah pintasan tetingkap arahan. Pengguna Windows: npm.cmd boleh digunakan daripada command prompt, npm hanya boleh dijalankan dari baris arahan. Keserasian: npm.cmd adalah khusus untuk sistem Windows, npm tersedia merentas platform. Cadangan penggunaan: Pengguna Windows menggunakan npm.cmd, sistem pengendalian lain menggunakan npm.

Pembolehubah global berikut wujud dalam Node.js: Objek global: modul Teras global: proses, konsol, memerlukan pembolehubah persekitaran Runtime: __dirname, __filename, __line, __column Constants: undefined, null, NaN, Infinity, -Infinity

Perbezaan utama antara Node.js dan Java ialah reka bentuk dan ciri: Didorong peristiwa vs. didorong benang: Node.js dipacu peristiwa dan Java dipacu benang. Satu-benang vs. berbilang benang: Node.js menggunakan gelung acara satu-benang dan Java menggunakan seni bina berbilang benang. Persekitaran masa jalan: Node.js berjalan pada enjin JavaScript V8, manakala Java berjalan pada JVM. Sintaks: Node.js menggunakan sintaks JavaScript, manakala Java menggunakan sintaks Java. Tujuan: Node.js sesuai untuk tugas intensif I/O, manakala Java sesuai untuk aplikasi perusahaan besar.

Ya, Node.js ialah bahasa pembangunan bahagian belakang. Ia digunakan untuk pembangunan bahagian belakang, termasuk mengendalikan logik perniagaan sebelah pelayan, mengurus sambungan pangkalan data dan menyediakan API.

Langkah-langkah penggunaan pelayan untuk projek Node.js: Sediakan persekitaran penggunaan: dapatkan akses pelayan, pasang Node.js, sediakan repositori Git. Bina aplikasi: Gunakan npm run build untuk menjana kod dan kebergantungan yang boleh digunakan. Muat naik kod ke pelayan: melalui Git atau Protokol Pemindahan Fail. Pasang kebergantungan: SSH ke dalam pelayan dan gunakan pemasangan npm untuk memasang kebergantungan aplikasi. Mulakan aplikasi: Gunakan arahan seperti node index.js untuk memulakan aplikasi, atau gunakan pengurus proses seperti pm2. Konfigurasikan proksi terbalik (pilihan): Gunakan proksi terbalik seperti Nginx atau Apache untuk menghalakan trafik ke aplikasi anda

Node.js dan Java masing-masing mempunyai kebaikan dan keburukan dalam pembangunan web, dan pilihan bergantung pada keperluan projek. Node.js cemerlang dalam aplikasi masa nyata, pembangunan pesat dan seni bina perkhidmatan mikro, manakala Java cemerlang dalam sokongan, prestasi dan keselamatan gred perusahaan.
