javascript - 使用 SailsJS + AngularJS 时如何防止模板暴露

标签 javascript angularjs templates session sails.js

我正在使用 SailsJS 和 AngularJS 构建 Web 应用程序。该应用程序需要 session 来跟踪任何用户的登录状态。我找到了这个tutorial并添加一个位于 /view 文件夹中的 index.ejs View 。在 index.ejs 中有一个 Angular ng-view,它引用 assets/templates 文件夹中的 html 模板。

还有一个 route.js 来处理客户端的模板路由:

angular.module('myApp', ['ngRoute'])
  .config(['$routeProvider',function($routeProvider){
    $routeProvider.when('/profile',{
      templateUrl:'/templates/profile.html',
      controller:'profileController as profileCtrl',
      resolve:{
        checkSession: function($location){
          if(/* Check session status */){
            alert("You can access profile.html");
          }else{
            $location.path('/login');
            alert("You don't have access here");
          }
        }
      }
    })
  .otherwise({redirectTo:'/'});
  }]);

当请求/profile时,路由可以将用户重定向到登录页面。但是,当用户请求 localhost:1337/templates/profile.html 时,他们仍然可以获得 html,因为 /assets 文件夹对互联网上的所有用户开放。我是否可以使用 Angular ng-view 并将模板保存在安全的地方(类似于 Sails 模板)?例如,当用户登录时,服务器提供一些模板,否则提供其他模板。

如何处理此类权限问题? 感谢您的帮助!

最佳答案

实际上不需要给模板文件添加权限,因为它们只是html文件。您可以使用 Angular templateProvider 根据用户 Angular 色提供单独的模板页面。

关于javascript - 使用 SailsJS + AngularJS 时如何防止模板暴露,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35453355/

相关文章:

javascript 弹出 concat 不起作用

javascript - JQuery - 分离然后将一个项目附加到列表中 - 为什么这个简单的示例不起作用?

javascript - 如何取消订阅 SignalR 集线器代理中的事件处理程序?

javascript - 使用值作为值语法时,AngularJS select 不绑定(bind)

javascript - 如何在同级组件指令之间传递事件

c++ - 继承抽象模板类

c++ - GCC 模板推导消除 const 错误?

javascript - 调试 Node.js 应用程序时,WebStorm 在错误的文件上停止

c++ - 如何从模板类型中获取指向模板化成员函数的指针?

javascript - 具有动态 templateUrl 和 Transclude 的 Angular 指令