zoukankan      html  css  js  c++  java
  • frame shiro 概述

    权限管理

      权限管理包括用户身份认证和授权两部分,简称认证授权。

      身份认证包括用户口令登陆、指纹验证、刷卡等方式。

      授权即访问控制,控制谁能访问哪些资源,主体身份认证后分配权限以访问自己可以访问的资源。

      主体发出请求 --> 判断是否允许匿名访问(淘宝首页) --> 判断是否通过认证 --> 输入用户名口令认证 --> 判断是否通过认证


    Apache Shiro 简介

      Apache Shiro 是java的一个安全框架。目前使用Apache Shiro的人越来越多,因为它相当简单,对比spring Security,可能没有Spring Security 功能强大,但实际工作时可能不需要那么复杂的东西,使用小而简单的Shiro就足够了。

      Shiro不仅可以用在JavaSE环境,也可以用在JavaEE环境。它可以帮助我们完成:认证、授权、加密、会话管理、与web集成、缓存等。


    Apache Shiro 框架

     

    Authentication--认证     Authorization--授权      SessionManagement--会话管理,会话可以是Java SE环境,也可以是Java EE环境;可以实现分布式的会话管理

    Crytography--加密密码    web support--web支持     caching--缓存       remember me--记住我    Testing--提供测试支持

    Concurrency--shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去  Run As--允许一个用户假装为另一个用户(如果他们允许)的身份进行访问


     Apache Shiro 概念

      shiro架构有三个主要概念:subject、securityManager、realms

      

      Subject,主体(user),可以是用户也可以是程序、爬虫。

      securityManager 安全管理器,它是shiro的核心,有点类似于springmvc的DispatcherServlet。它管理着所有Subject,并负责与其他组件(认证器、授权器、缓存控制器)交互。securityManager 不做具体的事情,具体的事情由认证器、授权器、缓存控制器来做,securityManager 调用认证器、授权器、缓存控制器来做具体的事情。

      realm,可以有一个或多个,安全实体数据源,即用于获取安全实体的。比如执行认证和授权(访问控制)时,shiro会从应用配置的realms中查找相当的比对数据,以确认用户是否合法。可以是jdbc实现,也可以是LDAP实现,或者内存实现等等,由用户提供。因为shiro不知道用户/权限存储在哪以及使用何种格式存储,所以我们一般在应用中都需要实现自己的realm。

     其它概念

      Principal,身份信息(username),具有唯一性,如用户名、手机号、邮箱地址等,一个用户可以有多个身份信息,但必须有一个主身份信息。

      credential,凭证信息(password),如密码、证书等。


     Apache Shiro 结构

     

    Subject --> Security Manager --> Authenticator/Authorizer/Session Manager/Cache Manager -->  realm(JDBC、LDAP)

    SessionDAO --> DAO大家都用过,数据访问对象,用于会话的CRUD,比如我们想把Session保存到数据库,那么可以实现自己的SessionDAO,通过如JDBC写到数据库;比如想把Session放到redis中,可以实现自己的redis  SessionDAO;另外SessionDAO中可以使用Cache进行缓存,以提高性能

  • 相关阅读:
    python修改python unittest的运行顺序
    史上最强大的python selenium webdriver的包装
    第六种方式,python使用cached_property缓存装饰器和自定义cached_class_property装饰器,动态添加类属性(三),selnium webdriver类无限实例化控制成单浏览器。
    python带参装饰器的改良版
    第五种方式,python使用组合来添加类方法和属性(二),以selenium的webdriver为例
    python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)
    linux添加PYTHONPATH环境变量
    linux 按照端口一句命令杀死进程,按照进程名称一句命令杀死进程
    python __all__用法
    使用pycharm,追求最优的代码。
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/9665197.html
Copyright © 2011-2022 走看看