Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >在处理管理系统用户和前端网站用户时如何处理用户权限?

在处理管理系统用户和前端网站用户时如何处理用户权限?
EN

Stack Overflow用户
提问于 2011-09-21 01:10:23
回答 1查看 1.8K关注 0票数 5

有人能推荐一个信息源或工作示例,说明在同时处理管理系统用户和网站用户时如何处理访问权限吗?

目前,我们的代码有点像一个大版本的在线商店,有几个工作人员使用管理系统管理订单,任何数量的客户都在使用该网站。管理系统是建立在一个访问控制列表(如LiveUser),但有一个相当大的‘创可贴’持有与一个‘虚拟’用户承担所有网站用户(所有客户)的角色。

理想情况下,应用程序代码将使用像can_place_order()这样的短语来确定用户是否可以执行任务。一个客户可以下一个订单,只要库存水平至少与订单数量一样多,并且他们已经支付了订单的价值。管理员用户只要有'customer_services‘角色,就可以下订单。

理想情况下,我们希望扩展该系统,这样我们就可以让某些注册客户在没有足够库存或支付的情况下下订单,只需生成发票和积压订单即可。这将是至少两个客户的“角色”,除了许多工作人员的角色.

  • 如何在两个单独的用户列表中使用相同的权限系统?
  • ,或者,如何将明显的两组用户组合成一个列表?

我们在应用程序中使用php & MySQL,但欢迎使用任何其他语言模式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-22 11:51:35

我尝试过许多不同的权限方案,而且我只找到了一种方法,使它们在几乎所有情况下都能满足程序员和客户端的要求。这是为了使他们部分数据驱动。

我最近的尝试是这样的:

  1. 每个用户都附加了一个权限对象。在我的例子中,当用户被请求时自动创建。(在我的示例中,不同部分的权限可能不同。因此,用户可能被允许为Y做X,但不允许做Z)
  2. 每个页面、代码块或需要允许的视图都用一个检查权限对象的if语句包装。如果该权限也需要担心该部分,则将当前相关的节If作为数组传入,返回一个新的bools数组来匹配。然后,
  3. 接口不会直接向用户公开这种复杂的混乱情况,相反,超级管理界面允许创建新的用户类型。这些类型带有一组权限,这些权限将为该用户的“类型”启用。不同类型的权限可能有重叠,因此Admin和Editor都可以“编辑副本”或其他什么。
  4. 普通的管理界面允许将单个用户设置为不同部分的不同用户类型。因此,一个用户可能是第2节的管理员,以及第2、3、4和5节的编辑器。它们也可以全局设置,从而重载未使用的部分(0)。

这有许多好处和一个缺点。首先是缺点。因为这些键是直接放入代码中的,所以只有超级管理员(又名开发人员)才能访问接口的这一部分。实际上,可能根本不需要接口,因为权限列表应该只随代码更改。这里真正的问题是,在运行代码之前,您不会知道标题有什么问题,因为语法会很好。现在,如果这是用类似于C#的代码编写的,这将是一个非常严重的问题。但是PHP中的几乎所有东西都不是类型安全的,因此它实际上是相当正常的。这些值也可以从一个配置文件中加载,甚至可以放入您构建用户类型的GUI中,尽管这似乎是错误的。

您从中获得的是动态设置新权限类型的能力。您可以相对容易地重命名这些权限。(由于系统只使用数字,标题只用于捕获数字,因此可以在几个地方轻松更改。)代码使用起来非常简单。看起来会是这样的:

代码语言:javascript
代码运行次数:0
复制
if($current_user->permissions->can("View Sales Records"))
{
    //Code to view sales records
}

或者稍微复杂一些

代码语言:javascript
代码运行次数:0
复制
$sections = array(1,2,3,4); //Probably really a list of all sections in the system
$section_permissions = $current_user->permissions->these($sections)->can("Edit Section");
foreach($sections as $s)
{
    if($section_permissions[$s])
    {
        // Code for maybe displaying a list of sections to edit or something
    }
}

方法链也很简单。->these()为这些值设置一个内部数组,然后返回对对象本身的引用。然后,如果该列表存在,->can()将对其进行操作,然后将其取消。在我自己的版本中,我也有一个->any(),它总是返回一个完整的节列表,所以我可以检查->any()->can()

最后,权限对象还包含用户类型的列表。这使得显示用户列表和他们拥有哪些权限变得非常容易。在我的例子中,我们只使用->types()来访问列表中的ids => names数组。

不存在的权限标题被忽略了。它们还匹配小写,删除空格和特殊字符,以帮助减少键入错误的问题。我甚至考虑过做一个距离检查和挑选最接近的匹配。但最终,最好不要依赖这样的东西。(可能记录错误,但优雅地选择最近的匹配。)

在代码和界面之外,用户只需要在管理员、编辑、出版者、作家和首席执行官等方面相互关联。为不同的组织创建不同的用户类型集也很简单。

所有这些部分都可以大量缓存,为那些根本没有登录的人设置一个基本用户是非常容易的,而且我还没有遇到一个基于权限的问题,这个问题在使用这种结构时并不明显。

我只希望我能和你分享真正的密码。我只是不拥有它自己,因此不能发布它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7497296

复制
相关文章
ECDH椭圆双曲线(比DH快10倍的密钥交换)算法简介和封装
前面有几篇blog就提到我有计划支持使用ECDH密钥交换。近期也是抽空把以前的DH密钥交换跨平台适配从atgateway抽离出来,而后接入了ECDH流程。
owent
2018/08/01
5.4K0
密码学[3]:椭圆曲线
Short Weierstrass 椭圆曲线:F 是特征 q > 3 的有限域,a, b ∈ F,且 4a^3 + 27b^2 \ne 0 ,所有点 (x, y) ∈ F x F 满足方程 y^2 = x^3 + ax + b 所组成的集合,还有额外的一个点 O,称为无穷点:
谛听
2023/10/27
8510
ECC椭圆曲线密码学
椭圆曲线密码学是一种可逆的非对称密码学算法,其英语全称:Elliptic Curve Cryptography,缩写为:ECC。
arnodev
2023/03/17
1K0
非对称加密与椭圆曲线
加密一直是通信领域的重要话题,我们经常听说各类算法,什么对称加密,非对称加密等等这类名词,云山雾绕,不得所以,经过这段时间的了解,接下来让我用九浅一深的语言,解释这个听上去深不可测,其实更是一头雾水的概念。 要解释加密技术,首先就要了解一下什么是对称加密。 对称加密 维基百科的解释如下: 对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。实
申龙斌
2018/03/06
1.8K0
非对称加密与椭圆曲线
渐近线讲解+例题 ,椭圆,双曲线,抛物线,三角函数椭圆,双曲线,抛物线,三角函数
http://dy.163.com/v2/article/detail/DGSH79TK0521JEM8.html
zhangjiqun
2024/12/16
1210
渐近线讲解+例题 ,椭圆,双曲线,抛物线,三角函数椭圆,双曲线,抛物线,三角函数
椭圆曲线加密与NSA后门考古
本文主要介绍椭圆曲线的基本原理以及基于椭圆曲线的密码学实现,包括ECC加密、ECDH秘钥交换以及ECDSA签名算法,并介绍其中潜在的一些安全问题。其中分析了两个ECC实现相关的真实案例,分别是索尼PS3的签名问题和美国国家安全局NSA留下的椭圆曲线后门。
evilpan
2023/02/12
1.2K0
椭圆曲线加密与NSA后门考古
椭圆曲线密码学(ECC)算法
椭圆曲线密码术 (ECC) 是一种强大而高效的公钥密码术,与传统方法相比,它以较小的密钥大小提供强大的安全性。本文将让您清楚地了解 ECC、其优势及其在现代网络安全中的应用。
WoTrus SSL
2024/12/10
5770
椭圆曲线密码学(ECC)算法
[以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用
本文转载来源自:http://blog.csdn.net/teaspring/article/details/77834360 感谢原作者teaspring的分享。本文已经得到原作者的转载许可。 数字签名算法在Ethereum中的应用不少,目前已知至少有两处:一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名;二是在共识算法的Clique算法实现中,在针对新区块进行授权/封印的Seal()函数里,对新创建区块做了数字签名。这两处应用的签名算法都是椭圆曲线数字签名加密
月牙寂道长
2018/03/29
4K1
[以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用
椭圆曲线聚合签名原理 & PBFT 算法改进
目录 1. 引言 2. 区块链介绍 2.1 区块链的起源 ​2.2 区块链分类和共识算法的选择 3. PBFT 算法介绍 3.1 拜占庭将军问题 3.1.2 口头消息 3.1.3 签名消息 3.2 PBFT 算法流程 3.3 PBFT 算法改进动机 4. PBFT 算法改进 4.1 改进思路 4.2 椭圆曲线 4.3 数字签名 4.4 聚合签名 4.5 改进 PBFT 5. 总结与思考 参考文献 1. 引言 2. 区块链介绍 2.1 区块链的起源 2.2 区块链分类和共识算法的
梦飞
2022/06/23
7580
椭圆曲线聚合签名原理 & PBFT 算法改进
ECC椭圆曲线详解(有具体实例)「建议收藏」
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说ECC椭圆曲线详解(有具体实例)「建议收藏」,希望能够帮助大家进步!!!
Java架构师必看
2022/03/21
1.8K0
ECC椭圆曲线详解(有具体实例)「建议收藏」
大型网站的HTTPS实践(一)---HTTPS协议和原理
1前言 百度已经于近日上线了全站HTTPS的安全搜索,默认会将HTTP请求跳转成HTTPS。本文重点介绍HTTPS协议,并简单介绍部署全站HTTPS的意义。 本文最早发表于百度运维部官方博客 2 HTTPS协议概述 HTTPS可以认为是HTTP + TLS。HTTP协议大家耳熟能详了,目前大部分WEB应用和网站都是使用HTTP协议传输的。 TLS是传输层加密协议,它的前身是SSL协议,最早由netscape公司于1995年发布,1999年经过IETF讨论和规范后,改名为TLS。如果没有特别说
小小科
2018/05/02
1.3K0
大型网站的HTTPS实践(一)---HTTPS协议和原理
OpenSSL密码库算法笔记——第5.2章 椭圆曲线算法的函数架构图
椭圆曲线算法中涉及的函数纷繁复杂,比如为了实现“复制点群”功能,就定义了四个函数,有:
全栈程序员站长
2022/09/13
4420
OpenSSL密码库算法笔记——第5.2章 椭圆曲线算法的函数架构图
PKI - 01 散列(Hash)函数
PKI(Public Key Infrastructure,公钥基础设施)证书系统是一种用于保护网络通信安全的技术。它基于非对称加密算法,使用一对密钥:公钥和私钥。
小小工匠
2024/05/25
720
PKI - 01 散列(Hash)函数
大白话解读多重椭圆曲线Seele黄皮书
大家好,我是Seele生态区的志愿者小白,从今天起~我要开始给大家讲技术问题(小白紧张ing)。感觉真的是一场大事业耶~完全小白的小白用自己的角度给大家说说元一的一些特点。这会是一个神奇的充满比喻的理解过程,如有不对的时候,欢迎批评指正呦,小白一概不认~~
Seele元一
2018/09/06
7070
大白话解读多重椭圆曲线Seele黄皮书
Kotlin(Java)与Golang的椭圆曲线密钥交换算法
go写的服务端后台,android是客户端之一,需要用到密钥交换(ecdh)算法生成aes密钥加密数据。公私钥生成算法,ECC-P256,也即secp256r1.
天地一小儒
2022/12/28
1.8K0
Kotlin(Java)与Golang的椭圆曲线密钥交换算法
深入解析ECC(椭圆曲线密码学)加解密算法
随着互联网的普及和信息安全需求的不断提高,密码学在保护数据安全方面发挥着越来越重要的作用。公钥密码体制作为一种常见的加密方式,为数据安全提供了可靠的保障。ECC(椭圆曲线密码学)是一种新型的公钥密码体制,相比传统的RSA算法,在相同安全性要求下,ECC所需的密钥长度更短,运算效率更高,因此在现代密码学领域得到了广泛应用。
公众号:码到三十五
2024/05/24
1.3K0
深入解析ECC(椭圆曲线密码学)加解密算法
这 HTTPS,真滴牛逼!
其中,RSA 是比较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使用的。而 ECDHE 算法具有前向安全,所以被广泛使用。
小林coding
2021/01/26
1.7K0
利用隐函数求椭圆切线
相对于 y=f(x)这种显函数,还有类似于 F(x,y)=0 这种隐函数,比如椭圆的标准方程中:
kifuan
2022/10/24
1.3K0
利用隐函数求椭圆切线
基础知识补充1:密钥交换/协商机制
密钥协商这一概念也得以提出。一方面它能为参与者提供身份认证,另一方面,也能与参与者协商并共享会话密钥。
春风大魔王
2020/07/29
5.4K0
区块链的系统探索之路:椭圆曲线之有限域
有一种有效的学习方法叫费曼学习法。它的做法是把你学到的东西系统性的讲述出来,如果别人通过你的描述也能理解其中内容,这说明你对所学知识有了一定程度的掌握。目前我正在系统性的研究区块链技术,因此想借助费曼学习法,把我掌握的信息系统性的输出,一来能帮助自己更好的理解消化知识,另一方面也希望能帮助对这方面有兴趣的同学。当然区块链的技术信息汗牛充栋,相比与其他资料,我觉得我的优势在于能体会初学者的难处,因为我自己就是初学者。
望月从良
2023/02/26
4550
区块链的系统探索之路:椭圆曲线之有限域

相似问题

用于KeyExchange的DH和PKI

30

DH椭圆曲线:为什么选择一个固定的基点?

10

什么是椭圆曲线协因子?

10

哪些椭圆曲线是量子电阻的?

20

椭圆曲线参数

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档