Is it safe to use expess-session without any tokens for user authentification in an AngularJS spa?
Can the user modify the session client-side anyhow?
On login theres a post request with the credentials (email, password)
connection.query( 'SELECT username, password, emailCode FROM `user` WHERE `email` = ?', [ email ], function ( error, results, fields ) {
if( error ) console.log( error );
if( !results.length ) return res.json( { err: 'Invalid password or email address' } ); // invalid email
if( !bcrypt.compareSync( password, results[ 0 ].password ) ) return res.json( { err: 'Invalid password or email address' } ); // invalid password
req.session.username = results[ 0 ].username;
req.session.email = email;
req.session.loggedIn = true;
res.json( { username: req.session.username, msg: 'Successfully logged in' } );
} );
In the express routing theres a loggedIn check like this:
app.get( '/views/user/:name', function( req, res ) {
var name = req.params.name;
if ( typeof req.session.loggedIn !== 'undefined' && req.session.loggedIn ) {
return res.sendFile( 'views/user/' + name, { root: __dirname + '/public/' } );
} else {
return res.sendFile( 'views/error.html', { root: __dirname + '/public/' } );
}
} );
Every client-side needed data is requestet via http get and returns user informations or anything else if req.session.loggedIn is true
It seems to work fine, but is it secure?