Postingan lainnya
Menggunakan jsonwebtoken di expressjs
Saya akan share cara sederhana melakukan login dengan token di expressjs, ini berguna untuk membuat login di angularjs
1. melakukan generate express dengan cara "express namaproject" (kalau belum install express-generator silahkan install) cara nya lihad sini <a href='https://www.npmjs.com/package/express-generator'>https://www.npmjs.com/package/express-generator</a> 2. buka folder "namaproject" terus edit file package.json dan ganti dengan
{
"name": "express-jwt",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.15.1",
"cookie-parser": "~1.4.3",
"debug": "~2.2.0",
"ejs": "~2.4.1",
"express": "~4.13.4",
"morgan": "~1.7.0",
"serve-favicon": "~2.3.0",
"mongoose": "*",
"jsonwebtoken": "*"
}
}
3. ketik "npm install" di cmd atau terminal 4. membuat folder "mongodb" terus buat file "mongo.js" di dalam folder mongodb 5. buka file mongo.js dan isikan
var mongoose = require('mongoose');
var db = mongoose.connection,
Schema = mongoose.Schema;
// #mongodb:0 config untuk menghubungkan database mongodb
mongoose.connect('mongodb://localhost:/belajar');
var SchemaUsers = new Schema({
username: String,
password: String
});
exports.users = db.model('users', SchemaUsers);
6. buka users.js di folder routes dan ganti dengan ini isi nya
var express = require('express');
var router = express.Router();
var jwt = require('jsonwebtoken');
var mongoose = require('mongoose');
var db = require('../mongodb/mongo');
/* GET users listing. */
// #routes:10 function untuk mengecek token
function isAuthenticated(req, res, next){
var token = req.body.token || req.query.token || req.headers.authorization; // mengambil token di antara request
if(token){ //jika ada token
jwt.verify(token, 'jwtsecret', function(err, decoded){ //jwt melakukan verify
if (err) { // apa bila ada error
res.json({message: 'Failed to authenticate token'}); // jwt melakukan respon
}else { // apa bila tidak error
req.decoded = decoded; // menyimpan decoded ke req.decoded
next(); //melajutkan proses
}
});
}else { // apa bila tidak ada token
return res.status(403).send({message: 'No token provided.'}); // melkukan respon kalau token tidak ada
}
}
// #routes:0 membuat router ke url "<a href='http://localhost:3000/users/login'>http://localhost:3000/users/login</a>"
router.post('/login', function(req, res, next) {
db.users.findOne({username:req.body.username}, function(err,data){ //mencari data
if (data) { // apabila menemukan
if (data.password === req.body.password) { //apabila data password sama dengan user password
var token = jwt.sign(data, 'jwtsecret', { // melakukan generate token di jwt
algorithm: 'HS256'
});
res.json({message:'berhasil login', token: token});
}else { //apabila salah password
res.json({message:'password salah'});
}
}else { //apabila username tidak di temukan
res.json({message:'username tidak di temukan'});
}
});
});
// #routes:20 router kusus buat yang sudah login atau sudah punya token
router.get('/private', isAuthenticated, function(req, res, next){
res.json({message:'halaman harus menggunakan token'});
});
// #routes:30 router yang bersifat public atau bisa di akses semua orang
router.get('/public', function(req, res, next){
res.json({message:'halaman bisa di akses siapa saja'});
});
module.exports = router;
dan silahkan coba buka link <a href='http://localhost:3000/users/login'>http://localhost:3000/users/login</a> untuk login <a href='http://localhost:3000/users/private'>http://localhost:3000/users/private</a> hanya bisa di buka dengan token <a href='http://localhost:3000/users/public'>http://localhost:3000/users/public</a> bisa di buka semua orang ini contoh todolist note: apa bila ada kesalahan di mohon lapor
Belum ada Jawaban. Jadi yang pertama Jawaban
Login untuk ikut Jawaban