javascript - 如何在身份验证后从静态 Express 页面提供整个 angularJS SPA?

标签 javascript angularjs twitter-bootstrap express routes

因此,我为我工作的公司构建了一个 SPA,由于它显示的数据非常敏感,因此在我合并身份验证之前它无法上线。因此,我尝试构建一个用于登录的静态快速页面,而不是在 SPA 中处理此问题。

目前我正在这样做:

  1. 提供我的登录页面。
  2. 调用用于身份验证的 API 路由。
  3. 如果成功,则提供 SPA。
  4. 如果不成功,则显示相应的错误消息并重新呈现登录页面。

我之前已经使用 JWT 构建了身份验证方案,所以我并不担心这部分。现在,我只想通过单击按钮来为我的 SPA 提供服务。如果我删除下面的路由并转到主页,我的应用程序将正常加载。我的问题是我正在尝试路由到 Angular 应用程序的主页('/#/')并快速呈现登录页面。

我主页上的按钮发出登录请求。我希望它重定向到我已经构建的 SPA。看起来应该很简单,但我无法弄清楚如何在我的一生中做到这一点。

//Login routes, success delivers angular SPA
app.get('/', function (req, res) {
  res.render('index.jade', {
    title : "n562d", 
    strapline : "Please Log In"
  })
});

app.get('/login', function (req, res) {
  res.redirect('/#/')
});

最佳答案

我觉得你有点困惑。当涉及到路线时,使用express作为REST引擎。 Angular 路由将负责客户端的显示逻辑和 View 路由。

我建议你将 JSON 数据传递给前端 Angular 并让它为你完成工作。 例如:

app.get('/', function (req, res) {
  res.json({
    title : "n562d", 
    strapline : "Please Log In"
  })
});

您可以在端点访问 API:http://localhost:3000/ 使用$resource访问 Express 端点的服务:

示例:

var MyResource = $resource('/');
 var myResource = new MyResource();
 myResource.$get(function(result){
   //result holds -->{title : "n562d", strapline : "Please Log In"}
   //use $location to change the uri, which is handled by Angular route config
   $location.path('/') 
 });

对于 Angular 路由,我建议您使用ui-router

示例:

function($stateProvider,$urlRouterProvider){
    $urlRouterProvider.otherwise("/");

     $stateProvider
     .state('index', {
      url: "/",
      templateUrl: 'app/authorization/index.tpl.html',
      controller: 'AuthController'
    })
     .state('login', {
      url: "/login/",
      templateUrl: 'app/authorization/login.tpl.html',
      controller: 'AuthController'
    })
    .state('signup',{
      url: "/signup/",
      templateUrl : 'app/authorization/signup.tpl.html',
      controller: 'AuthController'
    });
}
]);

请注意:我刚刚将我的 Controller 命名为 AuthController,您可以将其替换为您的 Controller 的名称,与 View 相同。

如果您需要更详细的答案,请告诉我,我会更新它。我希望它有帮助。

关于javascript - 如何在身份验证后从静态 Express 页面提供整个 angularJS SPA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28679560/

相关文章:

javascript - 从 angular.js 表单生成 PDF

javascript - 循环遍历 JSON 对象的条目和 react 状态,得到 'state undefined'

javascript - 使用angular js检查井字游戏中是否获胜者的逻辑

javascript - get ('url' ) 使用 AngularJS 和 ServiceStack webservice 进行操作

javascript - Bootstrap modals - 在更新模态窗口的大小/内容时更新背景阴影 mask

html - 如何将我的所有元素水平排成一行并且应该使用 Bootstrap 响应?

javascript - 具有更新类别的火灾事件

javascript - 数据表行按钮在 jade 模板中不起作用

javascript - ionic 日期选择器的最小值和最大值不适用于月份和日期

javascript - Bootstrap Vue : How to make progress bar fill smoothly over time