在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Linux  HTML/ NodeJS如何用session控制接口的訪問

NodeJS如何用session控制接口的訪問

問題描述

如果已知請(qǐng)求中不包含session,如何 拒絕訪問 除了登錄 以外 的接口?
前端框架用的是Vue

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

我用的辦法是清除一個(gè)cookie字段,前端判斷,如果沒有這個(gè)字段,就跳轉(zhuǎn)到登錄頁面,但是其實(shí)接口還是可以訪問的。如何在后臺(tái)控制,用戶沒有登錄,就不能訪問除了登錄以外的其他接口呢?

if (!requestData.SESSION().user) {
    res.clearCookie('user', {'max-age':0});
    res.setHeader('Set-Cookie', 'user=true;path=/;max-age=0;');
    // res.setHeader('Set-Cookie', 'isVisit=true;path=/;max-age=0;');
    // res.json({message: 'please signin'})
}

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

1.如何在后臺(tái)控制,用戶沒有登錄,就不能訪問除了登錄以外的其他接口呢?
2.另外還有個(gè)問題,在后臺(tái)如何能一次性清除多條Cookie呢?

回答
編輯回答
舊顏

使用的express嗎?

如果是的話,直接在所有請(qǐng)求前面增加一個(gè) 路由中間件做攔截處理,如果沒有此SESSION,那么直接error或者其他處理,不要走 next 往下執(zhí)行就可以 。

當(dāng)然沒有使用express也沒關(guān)系,道理都是一樣的,預(yù)先做請(qǐng)求攔截處理即可。

app.use((res, res, next) => {
    if (!requestData.SESSION().user){
        next('權(quán)限不足,請(qǐng)先登錄...')
    }else{
        next()
    }
})
2018年1月22日 19:32
編輯回答
雨蝶

經(jīng)過自己琢磨,請(qǐng)教他人后,放上自己寫的
在 server 下封裝

if (!requestData.SESSION().user && controller.auth > 1) { // req 和 session 都是公司大哥封裝的。 auth 是給每個(gè)接口的權(quán)限控制,可以 分級(jí)控制 用戶可訪問的接口
    res.setHeader('Set-Cookie', ['user=true;path=/;max-age=0;', 'access=0;path=/;max-age=0;']); // 清除cookie
    responseData.renderJSON({code: 403, msg: 'do not have permission'}) // 返回403 權(quán)限錯(cuò)誤
}
2017年10月15日 10:45