0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

.NET MVC身份验证访问权限控制设计

454398 来源:博客园 作者:刘彻 2020-11-06 11:23 次阅读

标识权限

因为后台的访问控制都是基于Action级别 的控制,而我们使用系统都是以功能模块为最小单位的控制,所以我们首先需要建立一个Action和功能块的对应关系,如:“创建用户”功能对应的Action是“Create”。由于开发人员的差异有时候这种对应的关系很难得到保证。应该避免一个Action操作多种功能,这对与基于Action级别的访问控制不利。一般不存在一个操作对应多个Action。这样我们建立的Action和功能映射表就是一一对应的了,完全可以使用Controler+Action的名称来作为功能的权限标识,但是我们经常有出现重载的Action在GET和POST请求中,所以我们最终使用Controler+Action+RequestType。

接下来,我们需要将角色和功能关联起来。这样在权限树中,我们以中文描述,实际以其权限标识和角色标识关联起来。

数据库设计

流程图:

后台访问控制

在首次验证用户名和密码时,应该将该用户所有的角色的权限的标识无重复的存储在该用户的Session中。有时候为了避免多表查询带来的性能问题,我们可以在用户表中冗余的存储其所有的权限标识。

我们将所有需要权限的Action都使用扩展了过滤器的的属性标识,这样在执行Action之前就会验证用户的权限,通过获取用户当前访问的Controler和Action名,查找保存到用户Session中的权限标识集合就可以确定其是否有访问权限了。

视图访问控制

我们虽然在后台功能访问上做了决定性限制,但为了用户体验度,我们还需要控制视图级的功能显示和隐藏,用户没有 权限的功能块,不应该显示在当前用户视图中。这个在MVC中,只能通过在视图中写if...else...来判断了。至于判断的条件还是功能的“权限标识”,看当前用户Session权限标识集合中是否存在即可。

身份验证-双证模式

参见“双证模式”。

票证:我们设计一个独立票证发放类,提供简单和安全两种票证生成方法,简单票证可以易于受到“会话劫持”攻击,但生成效率高,使用GUID即可。使用安全票证,就是将变数大的随机信息,如用户浏览器和IP、时间、随机数等信息作为产生票证的参数,同时在服务端Session中保存其浏览器、IP等客户端信息,以便核对用户的浏览器和IP信息是否一致,如果不一致说明此请求为黑客“会话劫持攻击”行为。

密码加密:使用标准的MD5加密策略,MD5“雪崩效应”高,且不可解密。只有在极端情况下使用超级计算机通过“碰撞”才能解密。普通计算机几乎不可能产生有效碰撞。(更正:2005年王晓云教授已使用普通微机就能在短时间内产生一个有效碰撞。估计可以使用SHA-2了。)

为提高性能,以上两个类使用“单例模式”。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3709

    浏览量

    64020
  • MVC
    MVC
    +关注

    关注

    0

    文章

    73

    浏览量

    13823
收藏 人收藏

    评论

    相关推荐

    无线身份验证的门禁控制系统设计方案

    管控——只有经认证的设备才能够加入该网络(与任何计算机都可访问任何网站的互联网不同),从而形成了隐性的、严格的身份验证机制。  各端点之间的TIP消息采用符合行业标准的加密方法进行加密,以便进行符合
    发表于 11-05 11:11

    facexx人脸识别身份验证迎来新技术革新

    现在我们在很多公共场合里面,都可以通过一些快速通道进入到我们需要进入的场合里面。身份验证已经不再是一个需要等待或者是需要被质疑的过程。因为现在人工智能技术的出现,已经为身份验证提供了一个更强大的支持
    发表于 12-19 15:06

    Vivado和SDK身份验证错误

    尝试运行SDK或Vivado的安装程序时,出现“身份验证错误:发生了未知异常。请验证您的用户ID和密码,然后重试”我可以登录该站点,另一位同事可以登录该站点。我们可以下载安装程序,但是当我们尝试安装
    发表于 01-02 14:55

    PN5180无法使用mifare classic进行身份验证怎么解决?

    ....ok 2. Anticollision CL1.....ok 3. 选择......ok 4. 验证....错误当我发送身份验证命令时,我得到 0x02(等待卡响应超时(卡不存在)。)但是卡存在,我
    发表于 03-23 08:46

    如何使用TapLinx针对Ultralight C进行身份验证

    使用 TapLinx 针对 Ultralight C 进行身份验证
    发表于 04-21 06:08

    什么是身份验证和授权

    什么是身份验证和授权 根据RFC2828(Internet Security Glossary,May2000),验证是“校验被或向某系统实体声明的身份的过程”。此处的关键字
    发表于 04-03 16:03 5716次阅读

    什么是Kerberos身份验证协议

    什么是Kerberos身份验证协议 kerberos是由MIT开发的提供网络认证服务的系统。它可用来为网络上的各种server提供认证服务,使得口令不再
    发表于 04-03 16:04 3009次阅读

    什么是询问握手身份验证协议

    什么是询问握手身份验证协议 CHAP(询问握手身份验证协议)是用于远程登录的身份验证协议,通过三次握手周期性的校验对端的身份,在初始链
    发表于 04-03 16:06 2626次阅读

    什么是密码身份验证协议

    什么是密码身份验证协议 PAP是一种身份验证协议,是一种最不安全的身份证协议,是一种当客户端不支持其它身份认证协议时才被用来
    发表于 04-03 16:07 1569次阅读

    身份验证和生物识别身份系统应用越加广泛

    身份验证和生物识别身份系统应用越加广泛
    发表于 02-27 14:37 1517次阅读

    因素身份验证锁开源资料

    电子发烧友网站提供《因素身份验证锁开源资料.zip》资料免费下载
    发表于 07-04 14:31 1次下载
    因素<b class='flag-5'>身份验证</b>锁开源资料

    PCB身份验证

    电子发烧友网站提供《PCB身份验证器.zip》资料免费下载
    发表于 07-22 10:09 2次下载
    PCB<b class='flag-5'>身份验证</b>器

    通过质询和响应身份验证实现安全访问控制

    本应用笔记回顾了门禁控制的关键:机械、磁性、接触式、RFID。它描述了质询和响应身份验证(质询、机密和消息身份验证代码或 MAC)以及 SHA-1 算法的重要作用。最后,本文解释了为什么质询和响应
    的头像 发表于 01-29 15:58 1111次阅读
    通过质询和响应<b class='flag-5'>身份验证</b>实现安全<b class='flag-5'>访问</b><b class='flag-5'>控制</b>

    通过质询和响应身份验证实现安全访问控制

    本应用笔记从信息技术(IT)这一新角度探讨了物理访问控制的关键。它比较了各种类型的关键技术(机械、磁性、接触、RFID),并评估了这些密钥的优势和劣势。具有质询和响应身份验证的密钥克服了传统静态数据
    的头像 发表于 03-08 15:22 571次阅读
    通过质询和响应<b class='flag-5'>身份验证</b>实现安全<b class='flag-5'>访问</b><b class='flag-5'>控制</b>

    HDCP 2.2:身份验证和密钥交换

    通信。即使发射器没有与 HDCP 接收器对应的存储主密钥,也会进行身份验证。这些密钥信息以消息的形式发送。如果我们使用HDMI,那么这些消息将以大端格式通过基于I2C的控制总线。
    的头像 发表于 05-29 09:28 3769次阅读
    HDCP 2.2:<b class='flag-5'>身份验证</b>和密钥交换