当ctx.session.userID有值时,我想将登录按钮改为注销,我尝试使用ejs引擎,但它不起作用。
我在登录后使用console.log打印userid,但它在终端上显示undefined,即使它在login()中被赋值。
这是server.js:
const M = require('./model')
const Koa = require('koa')
var serve = require('koa-static')
const session = require('koa-session')
var KoaRouter = require('koa-router')
var koaLogger = require('koa-logger')
const koaBody = require('koa-body')
const views = require('koa-views')
var app = new Koa()
const router = new KoaRouter()
app.use(views('view', {map:{html:'ejs'}}))
app.use(koaLogger())
app.use(koaBody())
app.use(router.routes())
app.use(serve(__dirname + '/public'));
app.keys = ['*@&))9kdjafda;983']
const CONFIG = {
key: 'd**@&(_034k3q3&@^(!$!',
maxAge: 86400000
}
app.use(session(CONFIG, app))
router
.get('/', async (ctx) => {
let title = 'ejs test'
let userid = ctx.session.userID
console.log('ctx.session.userID:',userid) // print userid after login, but it shows undefined
await ctx.render('index',{
title, userid
})
})
.post('/login', login)
.get('/error', async (ctx)=> {
await ctx.render('error',{})
})
async function login(ctx){
let {id, password} = ctx.request.body
console.log("test:",id,password)
if ( await M.get(id,password) != null){
ctx.session.userID = id
ctx.redirect('/')
console.log('login success')
}
else {
ctx.redirect('/error')
}
}这是index.html的一部分:
<% if (userid == null){ %>
<a href="/login">Login</a>
<% } else { %>
<a href="/logout">Logout</a>
<% } %>发布于 2020-01-02 21:08:09
嗨,如果用户不是默认登录,它将存储未定义。
您需要检查是否定义了用户id -
<% if (userid === undefined){ %>
<a href="/login">Login</a>
<% } else { %>
<a href="/logout">Logout</a>
<% } %> Hop这很有帮助。
https://stackoverflow.com/questions/59563427
复制相似问题