I would like to protect some endpoints in my express app, I want to create something simple to manage if my app became a big app...now I'm doing something like this:
setProtected(router) {
    const self = this;
    router.use(this.auth);
    ...
}
setPublic(router) {
    const self = this;
    ...
}
getRouter() {
    const router = express.Router();
    this.setPublic(router);
    this.setProtected(router);
    return router;
}
with:
  auth(req, res, next) {
    if(req.isAuthenticated()) {
      console.log('req.isAuthenticated()', req.isAuthenticated());
      return next();
    }
    return res.send(401);
  }
the problem in this case is that is difficult maintain and it doesn't work well as if I have /:id in my publicRoute and for example /my-items in my protected route when I'm not logged and I try to reach /my-items I get the code of /:id.
Another idea was to create a json with the list of all my urls with same information like protected/not protected and eventual roles and then change auth with something like:
import urls from './urls';
auth(req, res, next) {
    if (urls[req.url] == 'public') {
        return next()
    } 
    else if (urls[req.url] == 'protected' && req.isAuthenticated()) {
        return next();
    }
    return res.send(401);
}
whats the best way for you?
 
     
    