router.get('/login', (req, res) => {
// 判断用户是否已经登录
if (req.currentUser) {
// 如果已经登录,发送当前登录用户信息。
res.redirect('/users/profile')
} else {
// 没有登录,跳转到登录页面。
console.log(req)
res.render('login', {message: req.flash('error')})
}
})
// 处理登录请求(可能来自登录界面中的表单)
router.post('/login', (req, res) => {
AV.User.logIn(req.body.emailOrPhone, req.body.password).then((user) => {
user.set('lastLoginIP', req.headers['x-real-ip'])
user.save()
res.saveCurrentUser(user) // 保存当前用户到 Cookie
res.redirect('/users/profile') // 跳转到个人资料页面
}, (error) => {
//登录失败,跳转到登录页面
console.log(error.code)
req.flash('error', error.code)
return res.redirect('/users/login')
})
})
<!DOCTYPE HTML>
<html>
<head>
<title>登陆</title>
</head>
<body>
<% if (flash) { %>
<p><%= flash.message %></p>
<% } %>
<form action="/users/login" method="post">
<label>用户名/邮箱:</label>
<input type="text" name="emailOrPhone" autocomplete="on" placeholder="用户名/邮箱">
<label>密码:</label>
<input type="password" name="password" autocomplete="off" placeholder="密码">
<input type="submit" value="登陆"/>
</form>
</body>
</html>
const express = require('express')
const cookieParser = require('cookie-parser')
const cookieSession = require('cookie-session')
const AV = require('leanengine')
const flash = require('flash')
app.use(AV.Cloud.CookieSession({ secret: 'my secret', maxAge: 3600000, fetchUser: true }))
app.use(cookieSession({ name: 'session', keys: ['key1', 'key2'] }))
app.use(flash())