을 위한 미들웨어의 암호(노드 JS)

0

질문

다음과 같은 라우터-시나리오:

router.get('/A', [returns password])
router.get('/B', [returns no password])

해 무엇이 올바른 미들웨어처럼 보이는 반환 비밀번호에 따라하십니까?

내 시도 다음과 같습니다:

function passwordCheck(req, res, next) {
  let user= req.body_id
  User.findOne({_id: id}).select('+password').exec(function(err, result) {
    if (err) {
      console.log("error: " + err)
    } else {

      console.log("okay.");
      res.send(result)
    }
  })
}
express javascript mongoose router
2021-11-22 11:51:13
1

최고의 응답

0

당신이 뭔가를 만들 수 있습니다 비슷한 미들웨어 공장:

const checkPassword = (returnPassword = false) => {
    return (req, res, next) => {
        User.findOne({_id: req.body_id })
        .select('+password')
        .exec((err, result) => {
            if (err) {
                console.error(err);
                return res.status(500).send() // End of request on error?
            } else {
                const password = result['password'] // get your password this way or somehow else
                if (returnPassword) {
                    // Store password in request if returnPassword=true 
                    res.locals.userPassword = password;
                } 
                next();
            }
        })
    }
}

사용법:

router.get('/A', checkPassword(true), routeA)
router.get('/B', checkPassword(false), routeB)

액세스 경로:

router.get('/', (req, res) => {
  console.log(res.locals.userPassword) // Actual password for /A, undefined for /B
});

또한 체크 아웃 Express 서 작성을 위한 미들웨어 사용에 익스프레스 앱 을 이해하는 것입니다 next 고 어떻게 작동하는(나는 당신이 그것을 일정하게 사용하지 않도).
또한 난 당신은 몇 가지 오타:

  • select('+password') -당신은 확실한 플러스가 필요한가?
  • findOne({_id: id}) -야 findOne({_id: user})? 또는 이유 정의 user 그렇지 않으면?

P.S....그리고 결코 잊지 못하는 오류 처리:)

2021-11-22 14:23:19

나 추가할 수 있습니다,우리는 시장의 변수에서 같은 뭔가 res.locals 대신 직접 req. 이 습관이 있습을 재정의 중요한 변수 req 체입니다.
Someone Special

@SomeoneSpecial 합의에 대한 감사를 끝! 내 코드
Xeelley

나는 거의: if(!req.body.userID && !req.body.userName && !req.body.password) { let so userService.getUsers(function(error, users) { for(let i = 0; i < users.length; i++){ console.log(users[i].noPassword) so=users[i].noPassword() console.log(so) /* res.write(so) */ res.write(toString(so)) } res.end() }) } 내가 반복을 통해 몽구 개체고 지우에는 각각 하나의 암호입니다. 하지만 얼마나 나는 이러한 새로운 객체를 다시 컬렉션?
pawl123

@pawl123 시기 바랍니다. 를 사용하지 않 의견에 대한 큰 코드(가독성을 위한 목적으로),더 나은 대답합니다.
Xeelley

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................