2016-07-26 3 views
0

그래서 시험을 관리하기위한 플랫폼을 작성했습니다. 시험은 mongodb에 저장되며 REST를 통해 액세스 할 수 있습니다. 해당 서버에서는보기가 구현되지 않지만 다른 server.js에서는 실행됩니다.보기없이 MEAN/NodeJS 응용 프로그램을 보호

내 클라이언트 :

var express = require('express'); 
var app = express(); 

app.use(express.static(__dirname + '/public')); 

app.listen('7777'); 

내 서버 :

var express = require('express'); 
var path = require('path'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var cors = require('cors'); 

var klausuren = require('./routes/klausuren'); 
var users = require('./routes/users'); 

var app = express(); 

var mongoose = require('mongoose'); 

mongoose.connect('mongodb://localhost/notenplattform'); 
var db = mongoose.connection; 

db.on('error', function callback(){ 
    console.log("Fehler bei Verbindung zu MongoDB!"); 
}); 

db.once('open', function callback(){ 
    console.log("Verbindung zu MongoDB Erfoglreich!"); 
}); 

app.use(cors()); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/klausuren', klausuren); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
    }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 


module.exports = app; 

내 질문은 : 어떻게 클라이언트와 서버를 보호 할 수 있습니까? 온라인에서 찾은 모든 솔루션은 노드 JS의 기본 설정을 필요로합니다. 여기에서 뷰는 자체 클라이언트 스크립트가 아닌 서버 자체에서 제공됩니다.

저는 Passport와 다른 솔루션을 통해 이것을 구현하는 방법을 잘 모르며, Google의 과도한 사용은 도움이되지 않습니다. 초급 질문에 사과드립니다! 미리 감사드립니다.

+0

https://auth0.com/을 사용할 수 있습니다. – Jay

답변

2

JWT (json web token)를 사용하면 세션을 걱정하지 않고도 사용자가 인증 할 때 토큰을 생성 할 수 있습니다.

  1. 사용자는 사용자의 토큰을 생성하면 데이터베이스
  2. 에서 사용자 이름/암호를 확인 로그인 사용자는 비공개로 할 모든 요청에이 토큰을 전송
  3. 그에게 보내려고 할 때 로그 된 사용자의 경우 유효한지 확인하십시오.

자세한 내용을 보려면 Authenticate a Node.js API with JSON Web Tokens을 살펴보십시오. 간단하지만 도움이되는 자습서가 있습니다.

관련 문제