gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:59:44 25 4
gpt4 key购买 nike

我有一个在前端有四个模块的应用程序,我试图在前端使用尽可能多的 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. 安装 razor markdown来自 nuget
  2. 更改文件结构以匹配默认行为 RM [Razor Markdown] 到/views
  3. 按照 this service stack example 中描述的方法修改网络配置
  4. 将所有静态 htmls 文件更改为 .cshtml 文件,这在默认情况下会创建没有扩展名的相同路由,例如没有扩展名的/views/{Pagename},我只是使用这种方法来简化授权逻辑的实现(至少对我而言)
  5. 使用授权属性更新服务方法您可以找到更多信息 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'
});
}]

);

请注意,引用现在指向 Razor 路径。

这是我用angular做的一个小菜单

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


}

希望对你有帮助

关于asp.net - AngularJs + ServiceStack 应用程序的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com