cookie做登陸測試的思路

dyw3390199發表於2020-12-06

cookie做登陸測試的思路:
user.js/router

const login = require('../controller/user')
const { SuccessModel, ErrorModel } = require('../model/resModel')
const handleUserRouter = (req,res)=>{
    const method = req.method
    // 登入
    if(method === 'GET' && req.path === '/api/user/login'){
        // const result = login(req.body.username,req.body.password)
        const result = login(req.query.username,req.query.password)
        console.log(req.query.username,req.query.password);
        return result.then(data=>{
            if(data.username){
                // 操作cookie
                res.setHeader('Set-Cookie',`username=${data.username}; path=/`)
                return new SuccessModel()
            }
            return new ErrorModel('登入失敗')
        })
    }

    // 登入功能的測試
    if(method === 'GET' && req.path==='/api/user/login-test'){
        if(req.cookie.username){
            return Promise.resolve(new SuccessModel())
        }
        return Promise.resolve(new ErrorModel('尚未登入'))
    }
}

module.exports = handleUserRouter

user.js/controller:

const { exec } = require('../db/mysql')
const login = (username, password) => {
    let sql = `select username,realname from users where username='${username}' and password='${password}';` //insert 需要加`password`,where查詢中不用加上``號
    return exec(sql).then(resultData => {
        return resultData[0] || {}
    })
}

module.exports = login

在這裡插入圖片描述
此時在console裡面可以看到:
在這裡插入圖片描述
在application裡面可以看到:
在這裡插入圖片描述

我們再訪問一下login-test頁面:
在這裡插入圖片描述
因為請求這個域的時候cookie也一併帶過去了,檢測到有cookie.username,所以返回登入成功

位址列輸入:http://127.0.0.1:8000/api/user/login?username=dean2&password=123
回車之後,後端獲取到req.query裡面的username=dean2和password=123
把這兩個引數傳入login方法裡面得到result, result是一個promise物件,值就是resultDate[0]

user.js/controller
在這裡插入圖片描述
同時在得到data.username以後,會在服務端設定cookie:

res.setHeader('Set-Cookie',`username=${data.username}; path=/`)

在這裡插入圖片描述

這樣cookie就存在本地了:
在這裡插入圖片描述
現在當我們訪問測試路由http://127.0.0.1:8000/api/user/login-test的時候:
在這裡插入圖片描述
在這裡插入圖片描述

顯示已經登入了,因為此時req已經把username=dean2傳過去了,如紅框內的,而在服務端req.cookie.username可以獲取
在這裡插入圖片描述

相關文章