boomcode
boomcode

Reputation: 399

Pass URL in request

My app restricts users to access certain functionalities and redirects to a login page if not logged in. I want to save the URL that was requested before the login page. How can I do so? I have tried using locals:

function restrict(req, res, next) {

if (!req.session.userName){
    res.locals['url'] = req.originaUrl;

    res.redirect('/login');
}
else
    next();
}


app.get('/login', require('./src/controllers/pages/loginPageController'))

How can I access locals in my login controller?

Upvotes: 0

Views: 101

Answers (2)

Kenichi Shibata
Kenichi Shibata

Reputation: 158

you can use sessions

req.session

var users = require('./src/controllers/pages/loginPageController');
var session = require('client-sessions');
function requireLogIn(req,res,next){
  if(req.session.user)
    next();
  else if(!req.session.user) {
    res.redirect('/loginPage');
  }
}
// for storing sessions
app.use(session({
  cookieName: 'session',
  secret: 'this-is-my-unencrypted-key-it-will-be-encrypted-by-client-sessions-    package',
  duration: 60 * 60 * 1000,
  activeDuration: 30 * 60 * 1000,
}));
app.use('/users', requireLogIn, users);

Upvotes: 1

urban
urban

Reputation: 5682

I am not a node.js person but you can usually choose one of:

  1. Use the session to store the URL that the user visited
  2. When you redirect add the vistited URL as parameter ie: login?landPath=/path/the/user/went/to/first/time

Hope it helps

Upvotes: 0

Related Questions