asp.net – AngularJs ServiceStack应用程序的安全性

我有一个应用程序在前端有四个模块,我正在尝试尽可能多地使用前端的AngularJs我正在使用一个空网站asp.net项目来托管所有文件和REST serviceStack,我的项目有以下几种结构:

~/ (web.config,global.asax and all the out of the Box structure for an asp.net website)
- App <-  AngularJs 
    - Users  <-  js controllers and views (static html files)
    - Companies
    - BackEnd
    - Public
    Index.html
    IndexCtrl.js
    App.js
- Content
- Js

我使用angularjs服务调用和后端我使用REST与servicestack.

问题是如何限制只有经过身份验证的用户访问那些静态HTML文件?比如公司,后端和用户内部的那些

解决方法

嗨在做了一些研究后,这是对我有用的解决方案:

>从nuget安装razor markdown
>更改文件结构以匹配认行为RM [Razor Markdown]到/ views
>按照this service stack example中描述的方法修改Web配置
>将所有静态HTMLs文件更改为.cshtml文件,认情况下创建相同的路由,没有扩展名,如/ views / {Pagename}没有扩展名,我只是使用这种方法来获得更简单的授权逻辑(在对我来说最少)
>使用authorize属性更新服务方法,您可以找到更多信息in this page

为了说明这一点,这是我到目前为止的路线定义:

'use strict';
angular.module('myApp',['myApp.directives','myApp.services']).config(
    ['$routeProvider',function($routeProvider) {
        $routeProvider.when('/Dashboard',{
            controller: 'dashboardCtrl',templateUrl: 'Views/dashboard'
            }).when('/Payments',{
            controller: 'paymentsCtrl',templateUrl: 'Views/payments'
        }).
            when('/Login',{
                controller: 'loginCtrl',templateUrl: 'Views/login'
            });
    }]

);

请注意,引用现在指向剃刀路径.

这是一个小角度的菜单

<div class="container">

  <div class="navbar" ng-controller="indexCtrl">
    <div class="navbar-inner">
      <a class="brand" href="#/">header menu</a>
      <ul class="nav">
         <li ng-class="{active: routeIs('/Dashboard')}"><a href="#/Dashboard">Dashboard</a></li>
         <li ng-class="{active: routeIs('/Login')}"><a href="#/Login">Login</a></li>
         <li ng-class="{active: routeIs('/Payments')}"><a href="#/Payments">payments</a></li>
      </ul>
    </div>
  </div>


  <ng-view></ng-view>

</div>

假设付款页面受到限制,因此每次点击页面时我都会收到401未经授权的邮件.

服务主持人:

public override void Configure(Container container)
        { 

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),new IAuthProvider[] {
                new FacebookAuthProvider(appSettings),new TwitterauthProvider(appSettings),new BasicAuthProvider(appSettings),new GoogleOpenIdOAuthProvider(appSettings),new CredentialsAuthProvider()
            })); //I'm going to support social auth as well.

            Plugins.Add(new RegistrationFeature());

            Routes.Add<UserRequest>("/Api/User/{Id}");
            Routes.Add<LoginRequest>("/Api/User/login","POST");
            Routes.Add<PaymentRequest>("/views/Payments");


        }

我希望有所帮助

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....