2017-07-15 30 views
0

データベースに入る前にハッシュされたmd5を大文字にするにはどうすればよいですか?クエリでハッシュされたmd5を大文字にする方法はありますか?

私は次のことを試してみました:これは動作します

connection.query("UPDATE penguins SET password = UPPER(password)"); 

、それだけで登録したユーザーを大文字されません。データベース内の他のすべてのmd5ハッシュを大文字にします。

これは私のINSERTクエリです:

var insertQuery = "INSERT INTO penguins (moderator, registrationdate, inventory, email, password, username, nickname) VALUES ('" + moderator + "','" + registrationdate + "','" + inventory + "','" + email + "', + MD5('" + password + "'), '" + username + "', '"+username+"')"; 

これは私の全体のパスポート戦略です:

var moment = require('moment'); 
var datetime = moment().format('x') 
var mysql = require('mysql'); 
var LocalStrategy = require('passport-local').Strategy; 

var connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'root', 
    password: 'root' 
}); 

connection.query('USE kitsune'); 

// expose this function to our app using module.exports 
module.exports = function(passport) { 

    // ========================================================================= 
    // passport session setup ================================================== 
    // ========================================================================= 
    // required for persistent login sessions 
    // passport needs ability to serialize and unserialize users out of session 

    // used to serialize the user for the session 
    passport.serializeUser(function(user, done) { 
     done(null, user.id); 
    }); 

    // used to deserialize the user 
    passport.deserializeUser(function(id, done) { 
     connection.query("SELECT * FROM penguins WHERE id = " + id, function(err, rows) { 
      done(err, rows[0]); 
     }); 
    }); 


    // ========================================================================= 
    // LOCAL SIGNUP ============================================================ 
    // ========================================================================= 
    // we are using named strategies since we have one for login and one for signup 
    // by default, if there was no name, it would just be called 'local' 

     passport.use('local-signup', new LocalStrategy({ 
     // by default, local strategy uses username and password, we will override with email 
     usernameField: 'username', 
     passwordField: 'password', 
     gameusernameField: 'username', 
     nicknameField: 'nickname', 
     passReqToCallback: true // allows us to pass back the entire request to the callback 
    }, 

    function(req, username, password, done) { 

     // here you read from req 
     const email = req.body.email 
     const nickname = req.body.nickname 
     const inventory = '%1'; // This is what the user gets on register. You can set this to anything that you want like: %1%2%3%4%5%6%7%8%9%10%11%12%13%14%15%16 
     const moderator = '0'; 
     const registrationdate = datetime 

    passport.serializeUser(function(username, done) { 
     done(null, username); 
    }); 

     // find a user whose email is the same as the forms email 
     // we are checking to see if the user trying to login already exists 
     connection.query("SELECT * FROM `penguins` WHERE `username` = '" + username + "'", function(err, rows) { 
      console.log(rows); 
      console.log("above row object"); 
      if (err) return done(err); 
      if (rows.length) { 
       return done(null, false, req.flash('signupMessage', 'That username is already taken.')); 
      } else { 

       // if there is no user with that email 
       // create the user 
       var newUserMysql = new Object(); 
       newUserMysql.registrationdate = registrationdate; 
       newUserMysql.moderator = moderator; 
       newUserMysql.inventory = inventory; 
       newUserMysql.email = email; 
       newUserMysql.password = password; // use the generateHash function in our user model 
       newUserMysql.username = username; 
       newUserMysql.nickname = nickname; 
       var insertQuery = "INSERT INTO penguins (moderator, registrationdate, inventory, email, password, username, nickname) VALUES ('" + moderator + "','" + registrationdate + "','" + inventory + "','" + email + "', + MD5('" + password + "'), '" + username + "', '"+username+"')"; 
       console.log(insertQuery); 
       console.log('Query is rolling!'); 
       connection.query(insertQuery, function(err, rows) { 
        newUserMysql.id = rows.insertId; 
        return done(null, newUserMysql); 
        }); 

      } 
     }); 

    })); 





    // ========================================================================= 
    // LOCAL LOGIN ============================================================= 
    // ========================================================================= 
    // we are using named strategies since we have one for login and one for signup 
    // by default, if there was no name, it would just be called 'local' 

    passport.use('local-login', new LocalStrategy({ 
     // by default, local strategy uses username and password, we will override with email 
     usernameField: 'email', 
     passwordField: 'password', 
     passReqToCallback: true // allows us to pass back the entire request to the callback 
    }, 

    function(req, email, password, username, nickname, done) { // callback with email and password from our form 
     connection.query("SELECT * FROM `penguins` WHERE `username` = '" + username + "'", function(err, rows) { 
      if (err) return done(err); 
      if (!rows.length) { 
       return done(null, false, req.flash('loginMessage', 'No user found.')); // req.flash is the way to set flashdata using connect-flash 
      } 

      // if the user is found but the password is wrong 
      if (!(rows[0].password == password)) return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); // create the loginMessage and save it to session as flashdata 

      // all is well, return successful user 
      return done(null, rows[0]); 

     }); 



    })); 

}; 

答えて

0

は、あなたがINSERT文で)(UPPERを試してみました、これは働くかもしれ願っています。

var insertQuery = "INSERT INTO penguins (moderator, registrationdate, inventory, email, password, username, nickname) VALUES ('" + moderator + "',UNIX_TIMESTAMP(),'" + inventory + "','" + email + "', + UPPER(MD5('" + password + "')), '" + username + "', '"+username+"')"; 
+0

これは機能しました。どうもありがとうございます!あなたはまた:registrationdateがここに設定されているかどうかも知っていますか? –

+0

あなたの質問が登録日にはっきりしないのですが、挿入クエリで登録する日付を設定する場合は、NOW()、CURDATE()のいずれかを使用できます。これがあなたの質問でないならば、もっと教えてください。 – Gaurav

+0

これはUNIX時間である必要がありますが、データベース内で更新されていません –

関連する問題