2016-09-02 1 views
0

Я использую nodejs для создания restful api без jwt, просто используя cookie для аутентификации. Ниже приведено пример код с закодированными данными:Использование паспорта в nodejs без перенаправления и отображения сообщения на том же маршруте

  var express=require('express'); 
      var app=express(); 
      var bodyparser=require('body-parser'); 
      var passport=require('passport'); 
      var morgan=require('morgan'); 
      var cookieParser = require('cookie-parser'); 
      var session  = require('express-session'); 


      app.use(bodyparser.urlencoded({extended:false})); 
      app.use(bodyparser.json()); 
      app.use(morgan('dev')); 
      app.use(session({ secret: 'testing',resave: true,saveUninitialized: true })); 
      app.use(passport.initialize()); 
      app.use(passport.session()); 


      var LocalStrategy = require('passport-local').Strategy; 
      passport.use(new LocalStrategy(function(username,password,done){ 

       if(username=="admin" && password=="admin"){ 
         return done(null,{id:203,name:'admin',email:'[email protected]'}); 
       } 
       else{ 
       return done(null,false,{"message": "Invalid Username/Password"}); 
       } 

      })); 

      passport.serializeUser(function (user, done) { 
       done(null,203); 
      }); 
      passport.deserializeUser(function (id, done) { 
       done(null,{id:203,name:'admin',email:'[email protected]'}); 
      }); 

      function isLoggedIn(req, res, next) { 
       if (req.isAuthenticated()) 
        return next(); 

       res.sendStatus(401); 
      } 


      app.get('/',function(req,res){ 
      res.send({'status':'in Index'}); 
      }); 

      app.get('/login', 
       passport.authenticate('local',{successRedirect:'/dashboard',failureRedirect:'/loginfailed'}), 
       function(req,res){ 
       console.log('In Login');  
       res.send(req.session); 
      }); 

      app.get('/loginfailed',function(req,res){ 

      res.send({'status':'login failed'}); 
      }); 

      app.get('/dashboard',isLoggedIn,function(req,res){ 
      console.log(req.user.id); 
      console.log(req.session.passport); 
      res.send({'status':'login Success'}); 
      }); 

      app.get('/logout',function(req,res){ 
       req.logOut(); 
       req.session.destroy(function (err) { 
        res.clearCookie('connect.sid'); 
        res.redirect('/'); 
       }); 

      }); 


      app.listen(5000); 

Everthing работает нормально, но я не хочу, чтобы перенаправить пользователь на другой маршрут на успешной регистрации или отказ просто показать любое сообщение на одном маршруте. Возможно ли это? Если возможно, какой правильный способ это сделать? Любая помощь будет оценена по достоинству.

ответ

1

Просто не указать перенаправлять маршрут:

app.get('/login', 
    passport.authenticate('local',{}), 
    function(req,res){ 
    console.log('In Login');  
    res.send(req.session); 
    }); 
+0

я не могу отправить соответствующее сообщение от сделано обратного вызова, используемого в localstratergy или как некоторые передать сообщение, используемое в функции обратного вызова проделанного для входа – Vibhas

+0

Works копирования и вставки. Большое спасибо :) –

Смежные вопросы