#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;
});
}
};
})