我想用angular-permisssion实现类似的东西.并且需要控制元素的存在,我需要使用角度结构指令.
一开始,我认为这样的语法会起作用:
<h2 *permissionIf [permissionIfExcept]="'Read'">Except</h2>
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用.
此外,官方指南仅教您如何使用单个输入编写自定义结构指令.对于多输入,一些第三方教程涉及一些.但那是使用角度模板微语法来实现数据绑定.然后出现一个问题:模板语法不支持纯键值输入:
<h2 *permissionIf="except: map.except?only: 'test'">Except</h2>
Run Code Online (Sandbox Code Playgroud)
它扩展到这个(这是非法的):
<h2 template="permissionIf except: map.except?only: 'test'">Except</h2>
Run Code Online (Sandbox Code Playgroud)
一个愚蠢的临时解决方案是添加一个无用的变量声明.
<h2 *permissionIf="let i;except: map.except?only: 'test'">Except</h2>
Run Code Online (Sandbox Code Playgroud)
另一个不方便的方法是使用模板元素来包装代码.
<template permissionIf [permissionIfExcept]="'Read'">
<h2>Except</h2>
</template>
Run Code Online (Sandbox Code Playgroud)
以上都不是可以接受的.但我找不到更好的解决方法.
希望有些人可以提出一些建议:).
我正在使用Backbone和Knockout以及Knockback(ko + bb桥库)构建一个相当大的cms类型的应用程序,我正试图找出一种抽象权限的好方法.对小说也提前抱歉.
首先,这是一个非常非标准的架构,你可能会问第二个问题 - 你为什么不使用像Ember或Angular这样更全面的东西?采取的点.这就是现在的情况.:)
所以这是我的窘境.我想在控制器和viewmodel级别获得优雅的api权限.
我有一个可供我使用的对象,如下所示:
{
'api/pages': {
create: true, read: true, update: true, destroy: true
},
'api/links': {
create: false, read: true, update: false, destroy: false
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以在我的路由器/控制器中,我正在新建我的集合/模型/视图模型,然后在现有视图上调用自定义渲染方法.视图处理诸如释放视图模型之类的事情.
initialize: function() {
this.pages = new PagesCollection();
this.links = new LinksCollection();
},
list: function() {
var vm = new PageListViewmodel(this.pages, this.links);
// adminPage method is available through inheritance
this.adminPage('path/to/template', vm); // delegates to kb.renderTemplate under the hood.
}
Run Code Online (Sandbox Code Playgroud)
所以问题就在于,这些集合是完全非结构化的,即.路由器对它们一无所知.
但我需要的是,如果您不允许查看特定资源,它将重定向到未经授权的页面.
那么通过上面的例子,我考虑过滤前后的编码?但是,您在哪里指定每个路由器方法尝试访问的内容?
list: function() {
this.authorize([this.pages, this.links], …Run Code Online (Sandbox Code Playgroud) 我正在尝试在.NET中编写一个简单的传递代理。
我在某个外部域(http://exampleapi.com)上托管了REST API,
我想通过发送给我的应用程序的所有请求(获取,发布等)。JSONP不是一个选择。
所以如果我要求 GET localhost:1234/api/pages => GET http://exampleapi.com/pages
同样,如果我POST localhost:1234/api/pages => POST http://exampleapi.com/pages
我遇到的最大问题以及在其他地方似乎找不到的最大问题是,我不想解析此JSON。我搜索过的所有内容似乎都集中在HttpClient,但是我似乎无法弄清楚如何正确使用它。
这是我到目前为止的内容:
public ContentResult Proxy()
{
// Grab the path from /api/*
var path = Request.RawUrl.ToString().Substring(4);
var target = new UriBuilder("http", "exampleapi.com", 25001);
var method = Request.HttpMethod;
var client = new HttpClient();
client.BaseAddress = target.Uri;
// Needs to get filled with response.
string content;
HttpResponseMessage response;
switch (method)
{
case "POST":
case "PUT":
StreamReader reader = new StreamReader(Request.InputStream);
var jsonInput …Run Code Online (Sandbox Code Playgroud) 也许这种结构不适合Meteor,或者我认为它错了.试图在noSQL数据库中做这样的关系吗?
我有Dropzone和Widget集合.Dropzone可以包含许多小部件,每个小部件可以存在于多个dropzone中.
我的问题是,我似乎无法使Handlebars呈现已过滤的小部件列表.
我的dropzone模型
dropzone =
_id: "area1-id"
title: "Area 1"
Run Code Online (Sandbox Code Playgroud)
小部件模型(缩写)
widget =
_id: "widget1-id"
title: "My Widget"
dropzones: ['area1-id', 'area2-id']
# each widget stores an id of which dropzones it's associated with
Run Code Online (Sandbox Code Playgroud)
相关的模板结构
{{#each dropzones}}
<div class="dropzone span4">
<h1>{{title}}</h1>
<div class="widget-area">
<div class="hotzone">
{{#widgets _id}} # passing in the current dropzone id
{{/widgets}}
</div>
</div>
</div>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
辅助功能
# returns the correct sets of widgets, but can't figure
# out how to make it render the widget partial …Run Code Online (Sandbox Code Playgroud) .net ×1
angular ×1
backbone.js ×1
c# ×1
directive ×1
javascript ×1
knockout.js ×1
meteor ×1
permissions ×1