权限管理

权限管理:实现对用户访问系统的控制,按照安全规则或策略控制用户只能访问自己被授权的资源。
    用户认证:验证用户身份合法性。
        关键对象:
            subject:主体(用户/程序),访问系统资源
            principal:身份信息,唯一性。一个主体可拥有多个身份信息,但是都有一个主身份信息(primary principal)
            credential:凭证信息,密码/指纹/证书
            主体在进行身份认证时需要提供相应的身份信息和凭证信息。
    用户授权:用户认证通过后,对用户访问的资源进行控制,具有访问权限才可访问。 -- 访问控制
        授权过程:who 对 what/which 进行 how 操作
        who:主体subject,subject在认证通过后系统进行访问控制
        what/which:资源resource,subject必须几倍资源的访问权限才可以访问该资源
            资源Resource:对比类与实例
                资源类型:系统的用户信息
                资源实例:系统中id为001的用户 -- 资源类型的具体化
        how:权限/许可permission,subject必须具有permisson才可以访问资源。permission权限比如:CURD
    分配权限:
        用户需要分配相应的权限才可访问相应的资源,权限是对资源的操作许可。资源权限需要持久化存储,存储在关系数据库中。
    权限模型:

      

    权限控制:授权核心
        基于角色的访问控制:不利于系统维护,拓展。
        基于资源的访问控制:
            资源在系统中是不变的,对资源的访问需要permission。变更权限只需要分配在权限模块上去操作。
    权限管理解决方案:
        粗粒度和细粒度权限:
            粗粒度权限管理,是对资源类型的权限管理 
            细粒度权限管理,是对资源实例的权限管理 -- 数据级别的权限管理
        如何实现粗粒度的权限管理?
            将权限管理的代码抽取出来,在系统架构级别进行统一处理。 例如:通过springmvc拦截器实现授权
        如何实现细粒度的权限管理?
            在数据级别的是没有共性的细粒度的权限管理就是业务逻辑的一部分,在业务层进行处理。
        解决方案:
            基于URL拦截的方式实现:springmvc配置拦截器
                拦截器模式下,将需要拦截进行判断处理的url进行集中处理,每次请求均会拦截,此时对用户身份认证(登录)会产生多次的数据库查询请求,这里的解决方案一方面是将用户的信息(基本信息,权限信息 -- 可访问的url等)存入Session/cache。
            基于权限管理框架的实现:shiro权限管理框架
        小结:
            使用基于url拦截的方式,实现起来比较简单,不依赖框架,仅适用web容器提供的filter即可(springmvc下是interceptor),需要将所有的url进行登记配置。但是配置繁琐,不易于维护,url和权限的表示方式不规范。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小透明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值