小编sle*_*led的帖子

基于角色的访问控制的DB模式

我目前正在为本地协会开发成员管理,目前我正在开发数据库架构.我想与您分享以改进它并提供其他基于角色的访问模型(RBAC)的示例.我很感激任何建设性的批评,特别是我在表格之间使用的关系.

链接到highres:http://i.stack.imgur.com/WG3Vz.png

继承架构: DB Schema

这个怎么运作:

我将现有客户端(实际上是关联成员)从外部应用程序映射到我的管理应用程序.(客户表)

该关联在Division,Subdivisions等(intern_structures表)中构建.每个客户都可以成为多个部门,细分,部门等的成员.

每个客户都可以在诸如总裁,精算师,财务主管等会员(分部......)中担任一个或多个角色,并且每个角色都有某些特权,角色的所有者可以在其部门,细分,部门等中应用其他人. .

凭证连接到应用程序的特定操作.凭证的所有者可以对其范围内的其他成员执行此操作.可以有多个"独立"应用程序,但它们都共享相同的身份验证/授权系统.

应用程序在模块/子模块/动作等中构造.示例可以是"个人详细信息"模块,该模块包含一个名为"图片"的子模块,您可以在此图片上应用"查看,删除,编辑"操作.但是你不能删除任何图片,除非你试图删除图片的人在你有足够角色的部门/部门.

内部和应用程序结构都是树,实现为邻接列表嵌套集.邻接列表确保完整性,嵌套集允许我快速遍历树.

一个例外是您可以直接向某人提供某些凭据(client_credentials).如果某人需要对不属于他的divsion/section的人执行某些操作,则需要这样做.

因此,某人可以成为多个divsions/sections的成员,并在他所属的每个部门/部门中获得多个角色.我将通过他的多个角色合并某人拥有的所有凭据.凭证总是积极的,意味着限制性凭证是不可能的.

mysql credentials rbac db-schema

18
推荐指数
1
解决办法
3万
查看次数

Swift协议方法的奇怪行为

当使用具有可选方法的协议时,偶然发现了swift中的一个奇怪的行为,这些方法具有相同的名称和参数类型但命名参数不同.

如果我在课堂上实现了一个或两个方法,一切都运行正常,但一旦我发表评论,swift就会抱怨:

"方法'myProtocol(foo :)'具有与协议'MyProtocol'('myProtocol(bar :)')所需的参数名称不同的参数名称"

我期望的行为是我可以实现协议方法的任意组合(只有两者之一,两者都没有),因为这两种方法都被定义为可选的.

这是一个演示文件的操场文件,当你取消评论评论或没有实现任何协议方法时,一切编译都很好.

// Playground - noun: a place where people can play

import UIKit

@objc protocol MyProtocol {
    optional func myProtocol(foo aString: String!)
    optional func myProtocol(bar aString: String!)
}

class Test : MyProtocol {
    init() {

    }

    func myProtocol(foo aString: String!) {
        puts("myProtocol(foo aString: String!): \(aString)")
    }

    // UN-COMMENT THIS AND EVERYTHING COMPILES FINE
    /* 
    func myProtocol(bar aString: String!) {
        puts("myProtocol(bar aString: String!): \(aString)")
    }
    */
}

let foobar = Test()

foobar.myProtocol(foo: "Hello")
//foobar.myProtocol(bar: "Bye") …
Run Code Online (Sandbox Code Playgroud)

protocols swift

9
推荐指数
1
解决办法
931
查看次数

带有引号的文件名的正则表达式

我正在尝试正确解析multipart/form-data请求,除非上传的文件包含双引号,否则它会起作用.

请求看起来像(摘自wireshark):

Content-Disposition: form-data; name="file"; filename="b'e\"e.JPG"
Run Code Online (Sandbox Code Playgroud)

因此,该文件实际上被称为b'e"e.jpg在我的本地文件系统上.浏览器正确地转义了引号.

我想b'e\"e.JPG从这个字符串中获取文件名.

我找到了一个正则表达式,用于抓取带有转义引号的带引号的字符串:

/"[^"\\]*(\\.[^"\\]*)*"/i
Run Code Online (Sandbox Code Playgroud)

(来源http://www.regular-expressions.info/regexbuddy/stringescapedmulti.html)

正则表达式在应用于字符串"b'e\"e.JPG"时非常有效,但是当我尝试将其范围仅限于filename=部分时,例如:

/filename="[^"\\]*(\\.[^"\\]*)*"/i
Run Code Online (Sandbox Code Playgroud)

我不会得到任何结果.

任何帮助将非常感激

编辑:

我正在使用JavaScript,所以我把正则表达式放在js小提琴上:http://jsfiddle.net/hDBcs/

谢谢!

西蒙

regex filenames multipart

5
推荐指数
1
解决办法
1893
查看次数

寻找径向线段的最近邻

首先,不要被这个问题的外表吓到;)

我正在尝试在 matlab 中实现一个称为圆形模糊形状模型的形状描述符,其中一部分是获取每个径向线段的最近邻居列表,如图 1d 所示)

我在 MATLAB 中进行了直接而简单的实现,但我停留在算法的第 5 步和第 6 步,主要是因为我无法理解定义:

Xb{c,s} = {b1, ..., b{c*s}} as the sorted set of the elements in B* 
so that d(b*{c,s}, bi*) <= d(b*{c,s}, bj*), i<j
Run Code Online (Sandbox Code Playgroud)

对我来说,这听起来像是级联排序,首先按升序排序,然后按升序排序,但我找到的最近邻居不是根据论文。

圆形模糊形状模型描述算法

作为示例,我向您展示了我为段 b{4,1} 获得的最近邻居,这是图 1d 中标记为“EX”的那个)

我得到以下 b{4,1} 的最近邻居列表: b{3,2}, b{3,1}, b{3,8}, b{2,1}, b{2,8}

根据论文正确的是: b{4,2}, b{4,8}, b{3,2}, b{3,1}, b{3,8}

然而,我的点实际上是最接近由欧几里德距离测量的选定线段的集合!距离b{4,1} <=> b{2,1}小于b{4,1} <=> b{4,2}b{4,1} <=> b{4,8}...

在此处输入图片说明

这是我的(丑陋但直接的)MATLAB 代码:

width  = 734;
height = 734;

assert(width == height, 'Image …
Run Code Online (Sandbox Code Playgroud)

algorithm matlab geometry nearest-neighbor feature-descriptor

5
推荐指数
1
解决办法
911
查看次数