Платформа Azure Idendity перенаправляет на домашнюю страницу, убедитесь, что аутентификация не работает

Я пытаюсь реализовать этап аутентификации для моего (довольно простого) приложения CRUD. Итак, это идея: при подключении к localhost:8000 / вам нужно нажать кнопку входа в систему, которая предложит вам войти в систему с учетной записью Microsoft. Затем вы должны быть перенаправлены на localhost:8000 / feed. Но он просто перенаправляет меня на localhost:8000. Вторая проблема заключается в том, что я вижу, что MongoDB хранит Cookie. И если я захожу на localhost:8000 / auth / logout, он удаляет его. Так что работает. Но я все еще не могу посетить localhost:8000 / feed, потому что sureAuth не позволит мне.

Убедитесь, что авторизация:

      module.exports = {
ensureAuth: function(req, res, next){
    console.log("Executing ensureAuth function")
    if(req.isAuthenticated()){
        console.log("Is authenticated")
        return next()
    }else{
        console.log("ensureAuth failed")
        res.redirect("/")
    }
},
ensureGuest: function(req, res, next){
    if(!req.isAuthenticated()){
        return next()
    }else{
        res.redirect("/feed")
    }
}

}

Маршрут авторизации / входа:

      router.get('/login',
function(req, res, next) {
    passport.authenticate('azuread-openidconnect', 
      { 
        response: res,                      
        resourceURL: config.resourceURL,    
        customState: 'my_state',            
        failureRedirect: '/' 
      }
    )(req, res, next);
  },
  function(req, res) {
    console.log('Login was called in the Sample');
    res.redirect('/feed');
});

Маршрут авторизации / выхода:

      router.get('/logout', function(req, res){
  req.session.destroy(function(err) {
    req.logOut();
    res.redirect(config.destroySessionUrl);
  });
});

маршрут подачи:

      const express = require("express")
const router = express.Router()
const feedController = require("../controllers/feed")
const { ensureAuth, ensureGuest } = require("../middleware/auth")

router.get("/", ensureAuth, feedController.getContent)

router.post("/postScream", feedController.postScream)

module.exports = router

Экспресс-сессия:

      app.use(
    session({
      secret: 'foo',
      resave: false,
      saveUninitialized: false,
      store: new MongoStore({ mongooseConnection: mongoose.connection }),
  })
)

Если вам нужен кусок кода, позвоните мне. Буду благодарен за любую поддержку.

0 ответов

Другие вопросы по тегам