express中登錄、退出、設置Cookie以及cookie-parser簡單使用

在使用express要完成一個登錄功能,簡單使用了中間件cookie-parser。

1. 下載cookie-parser

npm i cookie-parser

2.在 app.js 中引用cookie-parser

const cookieParser = require('cookie-parser')

//不使用簽名
app.use(cookieParser())

//若需要使用簽名,需要指定一個secret  加密 Cookie
app.use(cookieParser('123456'))

//上面兩種折一即可

3.在登錄的路由中進行設置,如果登錄成功,我們就將用戶名存在Cookie中:

//findByNP是我自己爲User模式封裝的一個方法,其作用就是通過用戶名和密碼來查找用戶,如果找到了就返回用戶的信息 
User.findByNP(obj,function(err,data){
        //如果登錄成功,我們就設置Cookie
        if(data){
             //設置cookie ,其中maxAge是爲cookie設置一個生命週期60000000ms後會失效,即需要重新登錄
            res.cookie("user",req.body.username, {maxAge: 60000000 , httpOnly: false,signed:true});
            res.redirect('/')
        }else{
            return  res.status(500).send('Server error.')
        }
    })

4.當上述的方法執行成功後,我們就可以在瀏覽器的控制檯中找到相關的cookie信息。

5.如果我們需要登錄後才能訪問除login.html之外的所有頁面,那麼我們可以在app.js中的路由代碼之前添加以下代碼:

//  檢測是否登錄
app.use(function(req, res, next) {
    var url = req.url;
    // 判斷不攔截的路由 出/login和/之外的都攔截
    if (url != '/login' && !req.signedCookies.user && url != '/') {
        res.redirect('/login')  
        return
    }
    //如果登錄過,我們就執行下一個中間件
    next();
});

6.退出登錄時,清除cookie

router.get('/logout', function (req,res,next){ 
    //刪除Cookie  
    res.clearCookie('user')
    //回到/login路由
    res.redirect('/login');
})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章