Не удается аутентифицировать пользователя

#javascript #html #angularjs #express #angularjs-1.7

#javascript #HTML #angularjs #выразить #angularjs-1.7

Вопрос:

Я получаю код ошибки несанкционированного доступа 401, даже если имя пользователя и пароль точно такие же, я создал server.js изначально для передачи макетных данных. Я смог войти в систему, используя mock-api, который находится здесьhttp://demo1967295.mockable.io/userauth0 и даже до вызова api он возвращает 500 (внутренняя ошибка сервера), хотя сервер отвечает

Server.js файл, содержащий вызов api, который ранее использовался для передачи макетных данных

 var express = require("express");
var bodyParser = require("body-parser");
var session = require("express-session");

var app = express();

app.use(express.static("app"));

app.use(session({
    cookie: {
        maxAge: 60 * 1
    },
    resave: false,
    rolling: true,
    saveUninitialized: true,
    secret: "COOKIE_SECRET"
}));
app.use(bodyParser.json());

app.get("/login", function (req, res, next) {
    console.log(req.session.id);
    var user = req.body.email;
    var pass = req.body.password;
    var location =req.location;
    if (user === req.body.email amp;amp; pass === req.body.pass) {
        req.session.user = req.body.email;
        req.session.password = req.body.password;
        console.log("Inside login logic" req.body.email);
        res.end();
    } else {
        res.status(401).end();
        console.log("Inside login else logic" req.body.email);
    }
});

app.get("/me", function (req, res, next) {
    console.log(req.session.id);
    if (req.session.user) {
        res.send(req.session.user);
    } else {
        res.status(401).end();
    }
});

var server = app.listen(4000, function () {
  console.log("Sample login server running");
});
  

index.js

 var app = angular.module("loginTest", ["ngRoute"]);

app.config(function ($routeProvider) {
    $routeProvider
        // login view definition
        .when("/login", {
            controller: "loginController",
            controllerAs: "vm",
            templateUrl: "login.html"
        })
        // main app view definition
        .when("/main", {
            // controller: "mainController",
            // controllerAs: "vm",
            templateUrl: "main.html"
        })
        // many other routes could be defined here
        // and redirect the user to the main view if no routes match
        .otherwise({
            redirectTo: "/main"
        });
});
  
 // execute this function when the main module finishes loading
app.run(function ($rootScope, $location) {
    // attach to the event that fires before the router changes routes
    $rootScope.$on("$routeChangeStart", function (event, next) {
        // check current login status and filter out if navigating to login
        if (!$rootScope.loggedIn amp;amp; next.originalPath !== "/login") {
            // remember the original url
            $location.url("/login?back="   $location.url());
        }
    });
});
app.config(['$qProvider', function ($qProvider) {
    $qProvider.errorOnUnhandledRejections(false);
}]);
app.service("loginService", function ($http) {
    return {
        checkLogin: function () {
            return $http.post("https://api-url/api-name/auth/login").then(function (response) {
                return response.data;
            });        
        },
        login: function (email, password) {
            console.log("loginn fucntion");
            return $http.post("/login", {
                email: vm.email,
                password: vm.password
            }).then(function (response) {
                return response.data;
            }, function (response) {
                var err = new Error(response.statusText);
                err.code = response.status;
                throw err;
            });
        }
    };
})
  
 app.controller("loginController", function ($rootScope, $location, loginService) {
    var vm = this;

    function success() {
        $rootScope.loggedIn = true;

        var back = $location.search().back || "";
        $location.url(back !== "/login" ? back : "");
    }

    function failure() {
        $rootScope.loggedIn = false;
    }

    loginService.checkLogin().then(success);

    vm.login = function () {
        loginService.login(vm.user, vm.pass).then(success, failure);
    };
});
  

login.html

 <form class="form-signin" ng-submit="vm.login()">
    <label >Email</label>
    <input type="email" class="form-control" ng-model="vm.user" required autofocus>
    <br />
    <label >Password</label>
    <input type="password" class="form-control" ng-model="vm.pass" required>
    <button class="btn btn-md btn-primary btn-block" value="send" type="submit">Sign
        in</button>
    <p class="mt-5 mb-3 text-muted text-center" >amp;copy; 2018-2019 <br />Version <app-version></app-version>
    </p>
</form>
<form ng-submit="vm.login()">
    User<input type="text" ng-model="vm.user">
    User<input type="text" ng-model="vm.pass">
    <input type="submit" value="send">
</form>
  

Комментарии:

1. Первое: из-за вашей ошибки в названии вопроса кажется, что вы используете toLowerCase как свойство вместо функции, может быть, вы пропустили () при ее вызове? (Я не нашел этого в вашем коде)

2. Похоже, у вас их нет. В вашем опубликованном коде указывать нижний регистр

3. он возвращается из ответа api

4. Возможно ли показать код, который генерирует ответ api?

5. У меня нет доступа к коду api, извините, но наше приложение для Android работает нормально

Ответ №1:

 // execute this function when the main module finishes loading
app.run(function ($rootScope, $location) {
    // attach to the event that fires before the router changes routes
    $rootScope.$on("$routeChangeStart", function (event, next) {
        // check current login status and filter out if navigating to login
        if (!$rootScope.loggedIn amp;amp; next.originalPath !== "/login") {
            // remember the original url
            $location.url("/login?back="   $location.url());
        }
    });
});
app.config(['$qProvider', function ($qProvider) {
    $qProvider.errorOnUnhandledRejections(false);
}]);
app.service("loginService", function ($http) {
    return {
        checkLogin: function () {
            return $http.post("/login").then(function (response) {
                return response.data;
            });
        },
        login: function (email, password) {
            console.log("loginn fucntion");
            return $http.post("https://api-url/api-name/auth/login", {
                email: vm.email,
                password: vm.password
            }).then(function (response) {
                return response.data;
            }, function (response) {
                var err = new Error(response.statusText);
                err.code = response.status;
                throw err;
            });
        }
    };
})