2017-07-29 8 views
2

私のサーバーのログイン要求を作成しようとしています。私が勉強しようとしているのは ユーザーがログインしたときにトークンを作成する方法です。トークンを作成した後、そのトークンでユーザーの要求を制御したいと考えています。ここに私のコードの例があります。どこが間違っているのか教えてください。すべての道が真実なら、それをどのように作成するか私に説明することができますか?あなたは何ができるかNode.js Token ExpressJsで認証します

var port = 8080; 
var express = require("express"); 
var bodyParser = require('body-parser'); 
var mysql = require('mysql'); 
var bcrypt = require('bcrypt'); 
var session = require('express-session'); 

var con = mysql.createConnection({ 
    host: "localhost", 
    user: "root", 
    password: "123456", 
    database: "circles", 
    debug: false 
}); 

process.on('uncaughtException', function (err) { 
    console.log('UNCAUGHT', err.stack); 
}); 

var app = express(); 
app.use(express.static("localhost" + "/public")); //use static files in ROOT/public folder 
app.use(bodyParser.json()); // support json encoded bodies 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(session({secret: 'letsputasmile', 
       proxy: true, 
       resave: true, 
       cookie: { maxAge : 2628000000 }, 
       saveUninitialized: true 
       })); 

app.get("/", function(request, response){ //root dir 
    response.send("Hello!!"); 
    console.log(response); 
}); 



app.post("/register", function (request, response) { 
    var name = request.body.name; 
    var username = request.body.username; 
    var pass = request.body.pass; 
    var salt = bcrypt.genSaltSync(10); 
    var hash = bcrypt.hashSync(pass,salt); 
    console.log(name); 
    console.log(username); 
    console.log(pass); 
    con.query("Insert Into user(name,username,password) Values(\"" + name + "\"," + "\"" + username + "\"," + "\"" + hash + "\")", 
     function (err,result) { 
     if(err) response.send("nop"); 
     else response.send("success"); 
     }); 
}); 

app.post("/login", function(request, response) { 
    var username = request.body.username; 
    var pass = request.body.pass; 
    var passer; 

    con.query("select password from user where username = " + "\"" + username + "\"",function (err, result) { 
     if(err) throw err; 
     if(result.length === 1) { 
      passer = result[0].password; 
     } 
     bcrypt.compare(pass, passer, function (err, res) { 
      if(res) response.send("success"); 
      else response.send("nop"); 
     }); 
    }); 
}); 

app.listen(port); 
+0

この場合、「セッション」とは何ですか?コードを更新してください。 – ralphtheninja

+0

@ralphtheninja私はすべてをアップロードしました。私はセッション部 –

+0

を理解できないと思うが、何を達成しようとしているのだろうか?別のアプリでトークンを使用する必要がありますか?トークンを使用して同じWebアプリケーション内で使用しますか? –

答えて

1

jwt(JSONのwebtoken)を作成することです。あなたは基本的にいくつかのペイロード(何らかのメタデータをクライアントに与えたいと思っています)に署名し、クライアントは何かを要求するときにトークンを返すことができ、サーバがトークン(対称鍵)ニーズ、例えばuser_idまたはそれに類するもの。

詳細については、https://github.com/auth0/node-jsonwebtokenを参照してください。

関連する問題