Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

node redirect not working on angular

hi I'm new to node and I'm building a simple MEAN stack app, to reduce the code I'm sending front end files like this

app.use(express.static(path.join(__dirname, 'public')));

i have also build a simple middleware for simple authentication

requireLogin = function (req, res, next) {
  if (!req.user) {
      console.log('redirecting :)');
      res.redirect('/');
  } else {
      next();
  }
};

app.use('/rooms',requireLogin);

I'm trying to use this middleware on routes made in angular. but this is not working when i navigate through my angular app (it works when i directly put the URL to the address bar) i have also removed the /#/ which is added by angular.

    $locationProvider.html5Mode({
    enabled: true,
    requireBase: false
});

I'm using ui-router for routing.

like image 733
user3512121 Avatar asked Oct 20 '22 08:10

user3512121


1 Answers

You should do redirecting on angular, but not on node.js application. For example,

requireLogin = function (req, res, next) {
  if (!req.user) {
      console.log('User does not exist.');
      return false;
      // 
  } else {
      next();
  }
};

app.use('/rooms', requireLogin);

Then, /rooms won't be able to access unless there is user logged-in.

Backend routes (express ones): Those are the routes that an end user won't have to know about or even use them (your angular app will use them to communicate with the backend to work with its data but an end user wouldn't put them directly on the browser)).

Frontend routes (angular ones): Are the routes that maps to different pages of your application and because of that, end users can use them to access some parts of your application directly.

Read Express.js or angular for handling routes in a MEAN application? for more details.

like image 163
Khay Avatar answered Oct 22 '22 01:10

Khay