you have to define put the authenticate middleware of passport before your
router, so it validates the session token. look here
http://passportjs.org/guide/configure/ in the Middleware paragraph
Am Mittwoch, 16. April 2014 01:49:50 UTC+2 schrieb Alejandro Paciotti
Iacchelli:
>
> I’m developing an app with a api for serve data previous authentication.
>
> This app is in a server (port:3000) and the application is in another
> server (8080)
>
> The route that validates users on the server by post is:
>
>
>
> app.post('/API/login', passport.authenticate('local',{session: true}),
>
> *function*(req, res) {
>
> res.json({uncodigocualquiera: '24521046'});
>
> });
>
>
>
> And the route that serves the data is:
>
> app.get('/API/datos/:uncodigo', auth, *function*(req, res){
>
> codigocliente = req.params.uncodigo;
>
> /*
>
> ...
>
> ... go to the database…
>
> ...
>
> */
>
> res.json(rsDatosClientes);
>
> }
>
>
>
> Here is the code that validate whether the user is authenticated
>
> *var* auth = *function*(req, res, next){
>
> *if* (!req.isAuthenticated())
>
> res.send(401);
>
> *else*
>
> next();
>
> };
>
> And, if I write in the browser:
> *http://localhost:3000/api/login?username=admin&password=admin
> <http://localhost:3000/api/login?username=admin&password=admin>*
>
>
>
> I receipt correctly:
>
> { "uncodigocualquiera": "24521046" }
>
>
>
> And then, if I write in the browser:
>
>
>
> *http://localhost:3000/api/datos/29427604
> <http://localhost:3000/api/datos/29427604>*
>
>
>
> also receive a json perfectly.
>
>
>
> In the client side, with Angular, or from another domain, this work fine:
>
>
>
> *var* datos = {'username':'admin', 'password':'admin'};
>
> *var* futureResponse = $http.post('http://localhost:3000/API/login', datos
> )
>
>
>
> futureResponse.success(*function* (data, status, headers, config) {
>
> $scope.uncodigocualquiera = data.uncodigocualquiera;
>
> });
>
>
>
> futureResponse.error(*function* (data, status, headers, config) {
>
> *throw* *new* Error('Something went wrong...');
>
> });
>
>
>
> But with Angular, from another domain, even if I have already identified,
> I want to access the path that serves customer data and gives me error 401:
>
>
>
> *var* futureResponse = $http.get('http://localhost:3000/API/datos/' +$scope
> .codigocliente);
>
> futureResponse.success(*function* (data, status, headers, config) {
>
> $scope.razonsocial = data.razonsocial;
>
> });
>
>
>
> futureResponse.error(*function* (data, status, headers, config) {
>
> *throw* *new* Error('Something went wrong...');
>
> });
>
>
>
>
>
>
>
> Someone could explain me what I'm doing wrong?
>
>
>
> PD: Sorry for my English, I know it's not very good.
>
>
>
> [email protected] <javascript:>
>
--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.