Auth/index.js
const Koa=require('koa');const Router=require('koa-router')const views=require('koa-views')const path=require('path');const app=new Koa();const router=new Router();const login=require("./routes/login")const checkToken=require('./routes/check-token')const bodyparser=require('koa-bodyparser')app.use(views(path.join(__dirname,'./views')),{ extension:'ejs' })app.use(bodyparser())//处理登录相关的逻辑router.use('/login',login.routes())//处理令牌验证的逻辑router.use('/check_token',checkToken.routes())app.use(router.routes())app.listen(8383,()=>{ console.log(`app listen at 8383`)})刚才我们从应用A跳转到 http://localhost:8383/login?redirectUrl=localhost:8686
来看login中的逻辑
Auth/routes/login.js
const service = require("../service");const router=require("koa-router")()router.get('/',async (ctx)=>{ const cookies=ctx.cookies; const token=cookies.get('token'); //从cookie中判断应用A的登录态 if(token && service.isTokenVailid(token)){ // 。 。 。 如果有登录过 }else{ //2、SSO认证中心发现用户没有登录过, 于是渲染登录页面登录页面; await ctx.render('login.ejs',{ extension:'ejs' }) }})// 。 。 。 module.exports=router登录页面
Auth/views/login.ejs
<html><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>统一登录</title></head><body> <h1>统一登录</h1> <form method="post"> <div>用户名: <input type="text" name="name"/></div> <div>密码 <input type="text" name="password" /></div> <div><input type="submit" value=https://www.52zixue.com/zhanzhang/webqd/js/04/23/70557/'登录'>