Я разрабатываю веб-приложение со стандартным шаблоном mean.js. Недавно я добавил представление к моему приложению (страница «анализ»), создав модуль анализа и добавив некоторую логику маршрута со следующим кодом.Понимание экспресс-маршрутизации в сочетании с AngularJS (с использованием шаблона mean.js)
//Setting up route
angular.module('analysis').config(['$stateProvider',
function($stateProvider) {
// Projects state routing
$stateProvider.
state('imageAnalysis', {
url: '/image_analysis',
templateUrl: 'modules/analysis/views/tools.client.view.html'
});
}
]);
Это работает только денди, я могу пойти в homepage.com/image_analysis и увидеть мою страницу tools.client.view.html.
Моя цель теперь состоит в том, чтобы эта страница была видимой только для пользователей, которые вошли в систему. Мой первый подход к этому состоял в том, чтобы проверить, был ли пользователь зарегистрирован в логике угловых маршрутов, это оказалось для меня трудным. Я также читал, что проверка подлинности в интерфейсе очень опасна. Поэтому я решил проверить, зарегистрирован ли пользователь в режиме экспресс-маршрутизации.
Вот пример того, что маршрутизация Экспресс выглядит как один из моих других AngularJS модулей
module.exports = function(app) {
var users = require('../../app/controllers/users.server.controller');
var projects = require('../../app/controllers/projects.server.controller');
// Projects Routes
app.route('/projects')
.get(users.requiresLogin, projects.list)
.post(users.requiresLogin, projects.create);
app.route('/projects/:projectId')
.get(users.requiresLogin, projects.read)
.put(users.requiresLogin, projects.hasAuthorization, projects.update)
.delete(users.requiresLogin, projects.hasAuthorization, projects.delete);
// Finish by binding the Project middleware
app.param('projectId', projects.projectByID);
};
Уведомление функция users.requiresLogin, которая проверяет, если пользователь вошел в систему и перенаправляет пользователя на страницу входа, если они не. Я хочу воспользоваться этой функцией. Некоторые вещи, которые я не совсем понимаю в шаблоне, являются . Какова цель app.route()? Я думаю, что это может быть промежуточное ПО, но я не уверен, что он делает.
Вот несколько попыток, которые я предпринял в беспорядке с экспресс-маршрутизацией. Эти попытки находятся в моем файле analysis.server.routes.js, который я создал.
Покушение 1
module.exports = function(app) {
var users = require('../../app/controllers/users.server.controller');
// analysis routes
app.get('/image_analysis', function(req, res) {
console.log('helloworld');
console.log('helloworld');
console.log('helloworld');
console.log('helloworld');
console.log('helloworld');
console.log('helloworld');
});
};
Я подумал, что это журнал «HelloWorld», когда я получить доступ к странице image_analysis, но оно не появляется, чтобы сделать что-нибудь.
Покушение 2
module.exports = function(app) {
var users = require('../../app/controllers/users.server.controller');
// analysis routes
app.route('/image_analysis')
.get(users.requiresLogin);
};
Основываясь на другом коде, я думал, что это может работать, чтобы потребовать входа для страницы анализа. Но он ничего не сделал.
Любая помощь была бы высоко оценена! Спасибо всем, я изо всех сил пытаюсь понять экспресс-маршрутизацию в настоящий момент, и stackoverflow оказал огромную помощь.
Благодарим за отзыв. Я не вижу ничего такого, что выглядит в моем коде 'app.get ('*', function (req, res) { res.send (angularApp); // ваше угловое приложение подается здесь });' –
@ Даниэль Якобсон, я вижу. Вы используете этот [стандартный шаблон] (https://github.com/meanjs/mean)? И вы сохранили свой 'analysis.server.routes.js' в'/app/routes/'? Он * должен * работать тогда ... – laggingreflex
Да. Im в настоящее время пытается создать фабрику углового обслуживания для доступа к экспресс-маршрутам, но theres нет данных, которые я хочу опубликовать или получить, я просто хочу выразить консольный журнал –