Я делаю свой первый проект AngularJS с бэкэндом ASP.NET Web API. Что я пытаюсь сделать, так это то, что всякий раз, когда пользователь посещает www.mydomain.com, отображается страница входа (index.html). После успешного входа в систему он будет перенаправлен на dashboard.html (это страница оболочки, сюда идут частичные просмотры). Структура моего проекта показана ниже:

enter image description here

Меня смущают некоторые вопросы:

  1. Это лучшая/общая практика, которую я пытаюсь сделать выше?
  2. Поскольку dashboard.html является главной страницей, следует ли размещать app.js на dashboard.html?
  3. Если я поставлю app.js на dashboard.html, будет ли у index.html (страница входа) еще один app.js (i.e. loginApp.js)?
  4. Как мне управлять состоянием входа в систему, т.е. IsUserLoggedId, UserId и т. д. в угловой части?

Этот вопрос может быть глупым. Я гуглил, но не нашел ни одного примера/статьи, посвященной такой проблеме. Не могли бы вы помочь?

Заранее спасибо.

1
s.k.paul 1 Ноя 2014 в 12:29
С angular речь идет о маршрутизации, а не о том, какой html показывать... пожалуйста, прочитайте основы маршрутизации angularjs...
 – 
harishr
1 Ноя 2014 в 12:46
Я ищу то же самое. Если вы нашли ответ, пожалуйста, напишите его здесь ..
 – 
Jeeva J
6 Янв 2015 в 14:21

2 ответа

Я не уверен, как с этим справляется ASP.NET, но, насколько мне известно, ASP.NET - это просто серверная среда, тогда как AngularJS - клиентская среда. Эти два фреймворка решают разные задачи, но имеют некоторые перекрывающиеся функции. Если вы начнете использовать angularjs, то большую часть времени вы будете иметь дело с термином «Одностраничное приложение (SPA)».

Существуют разные подходы к тому, как вы можете обрабатывать перенаправление URL-адресов после входа в систему. Я просто покажу вам два примера. Существует еще много способов обработки аутентификации пользователя и сеанса.

Первый подход: В SPA большую часть времени браузер меняет маршрут и состояние URL-адреса непосредственно на самой странице, не запрашивая всю страницу с сервера. При этом ваш dashboard.html, скорее всего, будет статическим файлом шаблона, который будет загружаться напрямую из браузера. (т. е. сервер не выполняет динамический анализ dashboard.html, а служит только статическим файлом). После входа пользователя angularjs отправит асинхронный HTTP-запрос в конечную точку аутентификации ASP.NET. Успешный вход может вернуть маркер в браузер, и клиент будет использовать его для управления сеансом пользователя. При этом Angular должен будет изменить маршрут на /dashboard/. Обратите внимание, что весь поток происходит прозрачно для пользователя, он не запускает HTTP-запрос полной страницы.

Второй подход: В качестве альтернативы, если вы решите перенаправить с сервера, вам придется отправить HTTP-перенаправление 302. и, поскольку HTTP-перенаправление в конечном итоге вызовет полный HTTP-запрос к /dashboard/, и затем ему придется перезагрузить и загрузить angular app.js снова из браузера. В этом случае пользователю придется ждать, пока страница панели инструментов будет обработана сервером при входе в систему.

Вопросы:

  1. Это лучшая/общая практика, которую я пытаюсь сделать выше? есть много подходов, я думаю, лучше всего найти тот, который подходит именно вам. Если у вас есть RESTful API, вы можете более подробно изучить подход SPA.
  2. Так как Dashboard.html является главной страницей, должен ли я помещать app.js на Dashboard.html? в SPA вам не нужно дважды загружать app.js. но если вы используете второй подход, вам придется снова перезагрузить app.js.
  3. Если я помещу app.js на dashboard.html, будет ли index.html (страница входа) иметь другой app.js (т. е. loginApp.js)? зависит от вашего подхода, как указано выше
  4. Как мне управлять состоянием входа в систему, т.е. IsUserLoggedId, UserId и т. д. в угловой части? Стратегия аутентификации, < a href="http://frederiknakstad.com/2013/01/21/authentication-in-single-page-applications-with-angular-js/" rel="nofollow">Авторизация в стиле UNIX

Есть и другие официальные руководства, которые могут помочь Руководство разработчика AngularJS.

Надеюсь, это поможет вам интегрироваться с механизмом аутентификации ASP.NET.

0
Yeo 1 Ноя 2014 в 13:15
Спасибо за ваше объяснение. Я получил технику. Но было бы лучше, если бы вы разместили пример кода или что-то в этом роде.
 – 
s.k.paul
1 Ноя 2014 в 13:33
По ссылке выше, если вы читали, как авторизация в стиле UNIX, они предоставляют очень хороший образец github .com/fnakstad/angular-client-side-auth. Но обратите внимание, что это уже не ASP.NET, вы играете с AngularJS, поэтому сервер не имеет большого значения, поскольку он просто обеспечивает конечную точку. В этом случае они используют фреймворк Node Express. Также не смущайтесь, если увидите код представлений на стороне клиента, так как они используют разметку препроцессора Jade для упрощения html.
 – 
Yeo
1 Ноя 2014 в 13:39
Я подробно писал в блоге об аутентификации токена Angularjs с помощью бэкэнда Wep API, проверьте это здесь, это может быть полезно для вашего случая bitoftech.net/2014/06/09/…
 – 
Taiseer Joudeh
1 Ноя 2014 в 16:07

У вас должно быть несколько страниц оболочки. эта ссылка может вам помочь ...
см. часть Multiple Shell Pages.

0
Mahdi 13 Мар 2015 в 23:39