leancloud / node-js-getting-started

LeanEngine Node.js getting started.
https://leancloud.cn/docs/leanengine_overview.html
133 stars 118 forks source link

可以加一个flash中间件的例子么 #25

Closed solarhell closed 5 years ago

solarhell commented 7 years ago

connect-flashflash这两个包都试过了。

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())

代码如上所述,看过文档中关于session的描述了,但是还是没能配置成功。

jysperm commented 5 years ago

抱歉,这个 issue 太久了,先关掉了。这个仓库是项目模板,如无意外的话不会添加更多功能了。