2016-05-12 8 views
1

電子メールが送信されたか、コードが間違っているか、または両方がノードで間違っているかどうかを確認しようとしています。これは、これまでの私のコードです:電子メールが取得されていることを確認し、登録時にコードが正しいことを確認してください

app.post('/auth/signup', function (req, res) { 
var code = Access.findOne({ accesscode: 'secretpassword' }, { _id: 0, accesscode: 1 }, function (err, data) { 
    console.log(data); 
}); 

User.findOne({ email: req.body.email }, function (err, existingUser) { 
    if (existingUser) { 
    return res.status(409).send({ message: 'Email is already taken' }); 
    } 
    else if (code != req.body.access) { 
    return res.status(400).send({ message: 'Access code is wrong' }); 
    }else { 
    var user = new User({ 
     displayName: req.body.displayName, 
     email: req.body.email, 
     password: req.body.password, 
     isAdmin: false, 
    }); 
    } 
    user.save(function(err, result) { 
    if (err) { 
     res.status(500).send({ message: err.message }); 
    } 
    res.send({ token: createJWT(result) }); 
    }); 
    }); 
}); 

私はサインアップフォームからreq.body.accessがアクセスマングーススキーマにaccesscodeフィールドと等しいかどうかを確認しようとしています。

mongooseを使用してクエリを実行するときに、「secretpassword」を取得するにはどうすればよいですか?現在、{accesscode: 'secretpassword'}を取得しています。

if/else-ifは正しいですか?

編集:

私はそれを修正することができました。それがコードにaccesscode値を格納し、我々は他の機能でそれを使用し続けることができ

var code; 
Access.findOne({ accesscode: 'secretpassword' }, { _id: 0, accesscode: 1 }, function (err, data) { 
    code = data.accesscode; 
}); 

この方法:代わりにVARコードにそれを設定するので

= Access.findOneは、私はこのようにそれをやりました。

答えて

0

私は 'jsonwebtoken'モジュールを使用してコード部分を行います。 https://www.npmjs.com/package/json-web-token

だから、コード(トークン)の生成/検証のためには、次のようになります。例の多くはそこにMongoDBを使用して、ネットであるチェック、ユーザーの電子メールについては

var jwt = require('jsonwebtoken') 

// Generate code 
jwt.sign({sub:email,purpose:"signup"},signkey,{algorithm:"HS256"}); 

// Verify the code 
var decoded = jwt.verify(code,signkey,{algorithms:"HS256"}); 
if (decoded.purpose !== "signup") { 
     throw new Error("invalid purpose"); 
} 
if (decoded.sub !== getObjectProperty(res, emailProperty)) { 
     throw new Error("invalidactivationcode"); 
} 

+0

問題のコードはトークンではなく、アクセススキーマの「アクセスコード」です。 'accesscode'の内容が申し込みフォームから来るreq.body.accessと等しいかどうかを確認したいが、私はその部分が機能しているとは思わないので、最初の質問です。 – KujAslani

関連する問題