zoukankan      html  css  js  c++  java
  • Shiro learning

    Shiro入门学习

    一 、什么是Shiro?

      看一下官网对于 what is Shiro ? 的解释

      Apache Shiro (pronounced “shee-roh”, the Japanese word for ‘castle’) is a powerful and easy-to-use Java security framework (java安全管理框架)that performs authentication(认证), authorization (授权), cryptography (加密), and session management (会话管理)and can be used to secure any application - from the command line applications, mobile applications to the largest web and enterprise applications.

      通过官网的解释,我们可以获得一些信息。

    • Shiro是java安全管理框架
    • Shiro主要可以完成authentication(认证), authorization (授权), cryptography (加密), and session management (会话管理)
    • Shiro可以被用于任何应用,无论是web应用还是手机应用,命令行应用,还是企业应用。

    Shiro基本功能图

      Shiro的功能不止只有认证,授权,加密,绘画管理。还包括缓存,与web集成等。

      总结: Shiro是一个基于java开源免费的安全管理框架,Shiro不仅可可以在JavaSE环境下使用,也可以在JavaEE环境下使用,Shiro 可以完成认证、认证、授权、加密、绘画管理、缓存、web集成等。

    二、Spring Security 和 Shiro两者有什么区别呢?

      其实学习Shiro的时候,会很容易想起以前学过的另一种java安全管理框架,那就是Spring Security.

    • 根据时间线来说的话,Spring Security出现的更早。
    • Spring Security依赖Spring,但是Shiro不必依赖Spring,可选择范围广
    • Spring Security相对于Shiro来说,学习成本更高,更为复杂

      这些区别决定了Shiro是使用范围更广,更灵活。因此学习Shiro还是很有必要的。

    三、Shiro功能学习

    • Authentication(认证)

      对用户的身份进行认证,判断用户是否有相应的身份。比如说,我输入用户名和密码后,验证我这个用户是否存在在数据库中。不存在那就代表,我没有”身份“。

    • Authorization (授权)

      到了授权这一步的时候,用户当然已经经过了上面的”认证“了。授权也也就是权限验证,验证用户是否有某个权限。

      比如我们访问某视频软件的VIP资源的时候,那么系统当然会验证我们是否有权限访问这个资源,这就是权限验证。因为每个系统的权限不一样,有可能这个系统某些资源是只能VIP访问,那个系统某些资源是只能管理员访问。存在多样性,那么关于权限验证的规则当然就需要程序员自己来完成了。

    • session manager (会话管理): 用户登录就是一次会话,会话存放着用户的信息直到用户退出。这里的Session Manager和Java 中的Session概念上没有任何关系。
    • Cryptography (加密): 加密,Shiro中提供了很多中加密的具体实现,比如MD5之类的。可以很好的保护数据的安全性
    • Web Support (Web 支持): Web 支持,可以非常容易的集成到Web 环境;
    • Caching (缓存): Shiro为了提高效率,还支持缓存。比如用户登录后,其用户信息不用每次去查,直接从缓存中获取
    • Concurrency (多线程): shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
    • Testing: 提供测试支持;
    • Run As: 允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
    • Remember Me: 记住我,一次登录后,下次再来的话不用登录了。但是必须注意的是,remember me 并不会记住用户的具体信息

    四、Shiro框架学习

    • Subject

      Subject主体,是Shiro中的一个接口。Subject记录了当前操作用户

    • SecurityManager

        

      SecurityManager是一个接口,继承了Authenticator, Authorizer, SessionManager这三个接口。

      安全验证器,是Shiro的核心。用来管理所有Subject的安全认证。SecurityManager可以完成对Subject的认证和授权等。实际上是SecurityManager调用Authenticator进行认证,通过Authorizer进行授权,通过SessionManager进行会话管理。

    • realm

      Realm叫做领域,相当于是数据源。当使用SecurityManager对Subject进行安全管理认证的时候,就需要从Realm中获取用户的信息。 

      注意:不要把realm理解成只是从数据源取数据,在realm中还有认证授权校验的相关的代码

    •  Authenticator

      Authenticator即认证器,对用户身份进行认证,Authenticator是一个接口,shiro提供ModularRealmAuthenticator实现类,通过ModularRealmAuthenticator基本上可以满足大多数需求,也可以自定义认证器。

    •  Authorizer

      Authorizer即授权器,用户通过认证器认证通过,在访问功能时需要通过授权器判断用户是否有此功能的操作权限。

  • 相关阅读:
    ASP.NET没有魔法——ASP.NET MVC & 分层
    ASP.NET没有魔法——第一个ASP.NET应用《MyBlog》
    ASP.NET没有魔法——为什么使用ASP.NET
    ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序
    Orchard详解--第九篇 拓展模块及引用的处理
    【原创-算法-实现】异步HTTP请求操作
    000.Introduction to ASP.NET Core--【Asp.net core 介绍】
    新建 ASP.NET Core Web API 项目 -- RESTFul 风格 Hello World!
    新建 ASP.NET Core MVC 项目 -- Hello World!
    新建 .NET Core 项目 -- Hello World!
  • 原文地址:https://www.cnblogs.com/amberbar/p/10004617.html
Copyright © 2011-2022 走看看