zoukankan      html  css  js  c++  java
  • Shiro 学习笔记(一)——shiro简介

    Apache Shiro 是一个安全框架。说白了,就是进行一下 权限校验,判断下这个用户是否登录了,是否有权限去做这件事情。

    Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与web 集成、缓存等。

    其基本功能点 如下图:

    Authentication  : 身份认证/登录,验证用户是不是拥有相应的身份

    Authorization : 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色,或者 细粒度的验证某个用户对某个资源是否具有某个权限

    Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,他的所有信息都会在会话中

    Cryptography:加密,保护数据的安全性,如密码加密存储到数据库

    Web Support:可以非常容易的集成到web 环境中

    Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限 不必每次去查,这样可以提高效率。

    Concurrency: shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去

    Testing :提供测试支持

    Run As: 允许一个用户假装另一个用户(如果他们允许)的身份进行访问

    Remember Me:即一次登录后,下次再来的话不用登录了

    Shiro 不会去维护用户、维护权限,这些需要自己去设计/提供,然后通过相应的接口注入给 shiro 即可

    从应用程序的角度来观察如何使用 shiro 完成工作,如下图

    应用程序直接交互的对象式Subject

    Subject:主体,代表了当前用户(即与当前应用交互的对象,如爬虫、机器人等)。所有的Subject 都绑定到了 SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;

    SecurityManager:安全管理器,即所有与安全有关的操作都会与 SecurityManager交互。类似SpringMVC的DispatcherServlet 前端控制器

    Realm:域,Shiro 是从 Realm 获取安全数据(如用户、角色、权限),就是说SecurityManager 要验证用户身份,那么它需要从Realm 获取相应的用户进行比较以确定用户身份是否合法,也需要从Realm 得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm 看成DataSource

    对我们而言,一个shiro 应用:

    1、应用代码 通过 Subject 来进行认证和授权,而Subject又委托给SecurityManager

    2、我们需要给Shiro 的SecurityManager 注入Realm,从而让SecurityManager 能得到合法的用户及其权限进行判断

    总结:Shiro 不提供维护用户/权限,而是通过Realm让开发人员自己注入

    Shiro架构,如下图:

    注:本学习笔记来源于开涛的《跟我学Shiro》,详细请看原博客

  • 相关阅读:
    orale 函数大全[转] 涛
    easyuicombobox的option选项为true与false时的问题 涛
    数据库镜像转移Failover Partner 涛
    创建链接服务器 涛
    Sql Server 2008 R2 清空数据库中ldf日志文件 涛
    杂 涛
    Jquery 数组操作大全【转载】 涛
    VS2012常用快捷键 涛
    android studio集成ijkplayer Vevi
    CenOs 部署记录 Vevi
  • 原文地址:https://www.cnblogs.com/panie2015/p/5955613.html
Copyright © 2011-2022 走看看