2014-11-01 60 views
1

我正在做我的第一个使用ASP.NET Web API后端的AngularJS项目。我想要做的是,无论何时用户访问www.mydomain.com,都会显示一个登录页面(index.html)。成功登录后,他将被重定向到dashboard.html(这是shell页面,部分视图在这里)。我的项目结构显示如下─angularjs技术用于登录然后重定向到仪表板页面

enter image description here

我感到困惑的一些问题:

  1. 这是最好的/通用的做法我试图在上面做什么?
  2. 因为dashboard.html是主页,我应该把app.js放在dashboard.html
  3. 如果我把app.jsdashboard.htmlindex.html(登录页面)有另一个app.js (i.e. loginApp.js)
  4. 我该如何管理登录状态,即角度部分中的IsUserLoggedId,UserId等?

这个问题可能很愚蠢。我GOOGLE了,但没有找到任何例子/文章解决这个问题。 你能帮忙吗?

预先感谢您。

+0

与其关于路由而不是哪个html显示...请阅读angularjs路由的基础知识... – harishr 2014-11-01 09:46:27

+0

我正在寻找同样的东西。如果您找到答案,请在此张贴.. – 2015-01-06 11:21:56

回答

0

我不确定ASP.NET如何处理它,但就我所知,ASP.NET只是一个服务器端框架,而AngularJS是客户端框架。 这两个框架解决了不同的问题,但有一些重叠的功能。 如果您开始使用angularjs,那么大多数时候您将处理术语“单页应用程序(SPA)”。

在登录后如何处理url重定向有多种方法。我只会向你展示两个例子。还有更多如何处理用户身份验证和会话。

第一种方法: 在SPA,大多数时候浏览器将改变直接在页面本身的URL路径和状态,而不使来自服务器的整个页面请求。 就是说,你的dashboard.html很可能会来一个静态模板文件,将直接从浏览器加载。 (即服务器不动态解析dashboard.html,但仅用作静态文件)。在用户登录后,angularjs将向ASP.NET身份验证终点发出异步HTTP请求。成功登录可能会向浏览器返回令牌,客户端将使用它来管理用户会话。与此同时,Angular将不得不将路线更改为/dashboard/。请注意,整个流程对用户是透明的,它不会触发整个页面的HTTP请求。

方法二: 或者,如果您选择从服务器重定向,你必须发送一个HTTP重定向302和自HTTP重定向最终将拨打的完整的HTTP请求/dashboard/,它会再必须再次从浏览器重新加载并引导角app.js。在这种情况下,用户将不得不等待服务器登录时

问题被处理的仪表板页面:

  1. 这是最好的/通用的做法我试图在上面做什么? 有很多方法,我认为最好找到适合你的方法。如果您有一个RESTful API,那么您可能需要更详细地了解SPA方法。
  2. 由于dashboard.html是主页面,我应该在dashboard.html上放置app.js吗? 在SPA中,你不需要加载app.js两次。但如果您使用第二种方法,则必须重新加载app.js
  3. 如果我把app.js放在dashboard.html中,index.html(登录页面)是否有另一个app.js(即loginApp.js)? 取决于你的方法如上所述
  4. 我应该如何管理登录状态,即IsUserLoggedId,UserId等角部分? Authentication StrategyUNIX style authorization

有更多的官方指南,可以帮助AngularJS Developer Guide

希望这可以帮助您与ASP.NET身份验证机制集成。

+0

感谢您的解释。我得到了这项技术。但是,如果您发布示例代码或任何其他内容会更好。 – 2014-11-01 10:33:00

+0

从上面的链接可以看出,如果你阅读了UNIX风格的授权方式,他们提供了一个很好的示例https://github.com/fnakstad/angular-client-side-auth。但请注意,这不再是ASP.NET,你正在使用AngularJS,所以服务器并不重要,因为它们只是提供了终点。在这种情况下,他们使用Node Express框架。如果您看到客户端视图代码,也不要感到困惑,因为它们使用Jade预处理器标记来简化html。 – Yeo 2014-11-01 10:39:53

+0

关于Angularjs Token身份验证和Wep API后端的详细介绍,请在这里查看它可能对您的情况有用http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-净网页API-2-owin-ASP净身份/ – 2014-11-01 13:07:58

0

你应该有多个shell页面。这link可以帮助你...
是指Multiple Shell Pages部分。

相关问题