AngularJs + ServiceStack 应用程序的安全性

2024-01-29

我有一个前端有四个模块的应用程序,我试图在前端尽可能多地使用 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 文件?比如说公司、后端和用户内部的那些


您好,经过一些研究后,这是对我有用的解决方案:

  1. Install 剃刀降价 https://github.com/ServiceStack/ServiceStack/wiki/Markdown-Razor来自努盖特
  2. 更改文件结构以匹配默认行为 RM [Razor Markdown] 到 /views
  3. 按照中描述的方法修改 Web 配置这个服务堆栈示例 https://github.com/ServiceStack/SocialBootstrapApi/blob/master/src/SocialBootstrapApi/Web.config
  4. 将所有静态 html 文件更改为 .cshtml 文件,默认情况下,这会创建不带扩展名的相同路由,如不带扩展名的 /views/{Pagename} ,我只是使用这种方法来使授权逻辑更容易实现(至少为我)
  5. 使用授权属性更新服务方法您可以了解更多信息在此页面中 https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization

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

'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");


        }

我希望这有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJs + ServiceStack 应用程序的安全性 的相关文章

  • 访问被拒绝(“java.io.FilePermission”“执行”)

    我是初学者 这是我写的第一个小程序 我想用小程序运行 exe 应用程序 java代码 package appletexample import java io import java awt import java applet Apple
  • 限制对记录的访问。基于声明的权限是个好主意吗

    在 net 基于声明的身份框架中 如果我想限制用户对某个帐户 特定帐户 123456 执行操作 查看或编辑 我说的是商业实体 例如银行帐户 创建索赔是个好主意吗对于他们可以查看或编辑的每个帐户 一组中有很多索赔有什么缺点吗 系统管理员可能有
  • AngularJS 指令:如何使用超时隐藏警报?

    昨天 我开始写一篇notification directive对于我的项目 我在 stackoverflow 上问了问题AngularJS 警报未显示 https stackoverflow com questions 16802846 a
  • 如何知道在Angular JS中选择了哪个元素

    我制作了多个选定的弹出窗口 用户可以在其中选择多个值 我想在屏幕上打印所有选定的值或获取一个对象 其中包含用户选择的所有元素 我将换句话说 在我的演示中 我在屏幕上有一个按钮 单击按钮时 我会打开一个弹出窗口 其中有多个选定的元素我想获取用
  • Ionic/Cordova 应用程序中的身份验证

    首先 我不是专业人士 在我成为一名更好的开发人员的过程中 我试图了解需要什么以及如何完成为 Ionic Framework 应用程序创建注册 登录 大多数单页应用程序 SPA 在节点服务器上处理身份验证 该服务器还为客户端提供 HTML 就
  • 自定义错误页面未显示

    由于某种原因 当我收到 ASP NET 运行时错误时 它不会加载我的自定义错误页面
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow
  • 如何从代码隐藏运行存储过程(带参数 - 有返回值)?

    如何使用存储过程 带参数 具有类型的返回值int 从代码后面 我的存储过程如下所示 ALTER Procedure dbo sp Noskheh SumOfTotalPay Co ID int AS Declare Sum bigint B
  • 日志锻造强化修复

    我正在使用 Fortify SCA 来查找我的应用程序中的安全问题 作为大学作业 我遇到了一些无法解决的 日志锻造 问题 基本上 我记录一些来自 Web 界面的用户输入的值 logger warn current id not valid
  • 清洁琴弦的更好方法?

    我正在使用这种方法来清理字符串 public static string CleanString string dirtyString string removeChars lt gt string result dirtyString f
  • ASP.NET:如何删除所有用户的所有会话变量?

    我们有 ASP NET 应用程序 想要删除所有用户的所有会话中的所有会话变量 我的意思是不要仅使用以下命令从当前会话中删除会话变量 Session Clear or Session Abandon 我们还需要清除其他用户会话中的会话变量吗
  • 使用内存中的单元测试 .ToListAsync()

    下面是由于内存数据库集不支持 ToListAsync 而在 ShouldNotThrow 上失败的测试 我没有方便的确切措辞 但你明白了 如果它很重要 我正在尝试模拟实体框架版本提供的数据库集 6 1 3 TestFixture publi
  • 检查字符串是否是哈希值

    我正在使用 SHA 512 来散列我的密码 当然还有盐 我认为我想要的不可能 但无论如何我们还是要问一下 有没有办法检查字符串是否已经是 SHA 512 或其他算法 哈希值 当用户登录时 我想检查他的密码 如果它仍然是纯文本 则应将其转换为
  • 使用 PBKDF2 和 SHA256 生成 128 位 AES 密钥是否安全?

    我想使用 PBKDF2 和一些加密哈希函数来生成 128 位 AES 密钥 SHA1 也是 128 位 所以我想将其与 PBKDF2 一起使用 但它已损坏 所以我选择使用 SHA256 这是否安全 或者散列大小和生成的密钥大小之间的差异是否
  • 使用信用卡号的字符串格式

    我正在尝试将信用卡号显示为类似 的字符串 I tried txtbox Text string Format 0 ccNumber 但它不起作用 有任何想法吗 String Format 0 0000 0000 0000 0000 numb
  • 检测 ASP.NET MVC 上的会话过期

    我构建了一个购物车 它使用会话状态在用户浏览商店时保留购物车数据 我遇到一个问题 如果我在购物车的第 1 步上长时间打开浏览器窗口 然后按 转到第 2 步 我的操作会引发错误 因为第 2 步操作假定会话尚未过期并且ShopCart 对象处于
  • ASP Identity CoreGeneratePasswordResetTokenAsync 已过期

    我已经在 NET Core 2 1 中设置了一个 Identity Server 4 项目 一切正常 但是当我使用用户管理器生成重置密码令牌时 令牌在 24 小时后过期 我可以将其更改为 48 小时吗 我发送重置令牌的代码如下所示 var
  • Outlook 加载项,无法读取未定义的属性“BeginRequestEventArgs”

    我使用 Visual Studio 开发了 Outlook 插件 我的插件有一个按钮 用于填充会议邀请正文中的详细信息并添加所需的与会者 这在 99 的情况下都有效 但是 时不时地它会给我下面的 JavaScript 错误 Uncaught
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是
  • 使用 IIS 发布:找不到服务器 DNS

    我正在尝试使用 IIS 发布我的项目 我能够通过 Visual Studio 发布它 La aplicaci n web se public correctamente file D www plataformafantasy com Co

随机推荐

  • 如何获取

    我有一个FlowPanel 其高度是固定的 实际上是其父级高度的百分比 该高度是固定的 在此面板中 我添加了几个div元素 使用 CSS 我将其高度设置为其父级的 100 我想要做的是使用 javascript 将其宽度设置为等于其高度 我
  • 使用最新的 Android L 支持 v4 进行 Android 活动转换

    我正在为我的应用程序实现材料设计 我发现可以在此处进行活动之间的转换 http android developers blogspot com es 2014 10 implementing material design in your
  • Jquery 错误:需要对象

    这是我在 aspx 页面中的代码
  • android - 如何使文本视图滚动?

    实际上 我在文本视图中显示了一些数据 但它的一半数据超出了屏幕 所以我需要帮助来使文本视图滚动或任何其他可以向下滚动屏幕的东西 任何帮助 将不胜感激 将 TextView 放入 XML 中的 ScrollView 中 如下所示
  • Maven + Cucumber-jvm - 如何根据环境运行不同的功能子集

    我正在努力实现这一目标 我想配置一个 Maven 项目 以便它根据所选配置文件运行不同的 Cucumber 功能子集 dev pro 例如 我有几个功能文件来测试网络导航 使用标签来指定环境 PRO pro Feature Nav Pro
  • 如何使用 gdb“观察”C++ 动态数组?

    考虑以下示例 int size 10 kk new int size for int i 0 i lt size i kk i i delete kk 如何为整个阵列添加监视 我可以一一添加手表 kk 0 kk 1 但既然我知道数组的长度
  • kubectl exec 到多容器 pod 的容器中

    我在登录多容器 Pod 的一个容器时遇到问题 我从以下位置获取容器 IDkubectl describe pod
  • Symfony2:使用具有相同名称的自定义字段类型覆盖内置字段类型

    As per 本文 http symfony com doc current cookbook form create custom field type html在 Symfony 文档上 我创建了一个自定义字段类型 将其设置为servi
  • 视图框架在 viewWillAppear: 和 viewDidAppear: 之间变化

    我在我的应用程序中发现了一个奇怪的行为 其中连接IBOutlet在我的视图控制器中的调用之间有其连接的视图框架viewWillAppear and viewDidAppear 这是我的相关代码UIViewController子类 void
  • 如何使用PHP连接sql server

    我想使用PHP连接到sql server数据库 我安装了 xampp 1 7 0 php 5 2 和 SQLSRV20 我已将扩展添加到php ini我收到此错误 Warning mssql connect function mssql c
  • 如何在 vim 中使用 ctags 自动完成

    我尝试在vim中开发android项目 但是发现在ctags中查找一种方法有点无聊 有没有办法使用ctags在vim中显示自动完成列表 thanks 这是我的 ctags 版本如下 Exuberant Ctags 5 8 Copyright
  • 如何在 WireMock 中成功代理 HTTPS 端点?

    我正在编写一个内部使用 WireMock 的 HTTP 记录播放代理 并且在记录 HTTPS 目标时遇到问题 HTTP 站点工作正常 以下是我为未加密站点设置 WireMock 代理的方法 java jar var proximate wi
  • 了解每个线程的 cuda 堆内存限制

    这个问题是关于cuda中堆大小限制的 访问了有关该主题的一些问题 包括这个 内核中的新运算符 奇怪的行为 https stackoverflow com questions 13072624 new operator in kernel s
  • 将 Spring Security JspTagLib 添加到 Freemarker 模板 - 控制器单元测试的问题

    我已将 Springs jsp 安全标记库添加到 freemarker 模板中 因为我使用 freemarker 而不是 jsps 来查看我的 Web 应用程序 对于任何寻找如何设置它的人 我发现添加 spring 库以使用 JSP Tag
  • 多层感知器 - 寻找“分离”曲线

    使用单层感知器 很容易找到 分隔线 我不知道专业术语 的方程 即根据感知器的权重在训练后将两种类型的点分开的线 在多层感知器中 如何以类似的方式找到分隔两种类型点的曲线 不是直线 方程 thanks 这只是尝试获得分离边界或曲线的近似值 D
  • React Native:通过本机模块获取设备名称,无需回调

    我想使用本机模块而不使用外部库来获取 iOS 设备名称 根据 React Native 的文档 React Native 桥是异步的 因此将结果传递给 JavaScript 的唯一方法是使用回调或发出事件 然而 文档还解释说 您可以将常量导
  • 在c#中使用oledb获取Excel数据范围

    我想通过使用 oledb 获取 Excel 工作表使用的数据范围 代码如下 String strExcelConn Provider Microsoft Jet OLEDB 4 0 Data Source E DOTNET CrsMicro
  • 外部车把模板骨干木偶

    在我的应用程序中 我添加了 Marionette sync 插件并覆盖这些方法 Backbone Marionette TemplateCache prototype loadTemplate function templateId cal
  • 具有重复组的正则表达式

    我一直在尝试匹配连字符之间的短语 我意识到我可以轻松地拆分连字符并取出短语 但我的等效正则表达式无法按预期工作 我想了解原因 只是我对短语的定义 只是非捕获空格分隔的连字符 so 正在捕获连字符或行尾 最后 整个内容用括号括起来 量词匹配多
  • AngularJs + ServiceStack 应用程序的安全性

    我有一个前端有四个模块的应用程序 我试图在前端尽可能多地使用 AngularJs 我正在使用一个空的网站 asp net 项目来托管所有文件和 REST serviceStack 我的项目具有以下结构 web config global a