zoukankan      html  css  js  c++  java
  • 002 shiro的三个核心API

    一 . 概述

      本次简单的说明一下shiro的使用,将上一节的shiro的基本功能进行一下说明.


     二 . 核心API

      上一节我们说到Shiro对外部的核心对象有三个

      [1]Subject : 描述用户对象

      [2]SecurityManager : 安全管理器对象,封装shiro功能的对象.

      [3]Realm : 安全数据的提供者.

    本节的核心作用就是说明一下上述的API对象的简单使用.


    三 . SecurityManager

    (1)我们此处使用固定数据源的操作,会使用ini文件完成Realm的实现,并使用对应的IniSecurityManager.

          //实现shiro的认证过程
            //创建SecurityManager
            SecurityManager securityManager = new IniSecurityManagerFactory("classpath:shiro.ini").createInstance();
            //将当前的SecurityManager设置到当前的环境之中
            SecurityUtils.setSecurityManager(securityManager);

    我们通过一个ini文件创建一个SecurityManager对象,并将其设置到全文环境之中.

    (2)Subject对象的获取

    //下面实现的是一个登陆的功能
            //获取Subkect,相当与一个Currentuser
            Subject currentUser = SecurityUtils.getSubject();

    我们从工具类之中获取Subject对象.


    四 .Subject的功能

    从上图之中我们可以看到.Subject对象封装了大量的功能,比如登录login(),还有大量的授权方法(检查是否具有某个权限的方法),我们以后的应用代码大部分时候都是

    与Subject对象发生交互.


     五.Realm

    我们首先看一下类图,发现Realm是顶层的接口,其中有一个方法:

     AuthenticationInfo getAuthenticationInfo(AuthenticationToken token) throws AuthenticationException;

    上面的方法就是获取认证信息的方法,传入的参数是一个认证的凭证(账号和密码),如果认证成功,就返回一个用户的身份信息,否则就抛出异常.

    但是,我们发现Realm之中没有授权的方法,这个方法被放到了AuthorizingRealm这个接口之中.

     protected abstract AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals);

    上面的方法表示,通过用户的主体信息返回用户的授权信息(就是通过用户的身份信息在检查权限的时候判断是否具有权限).

    因此,我们想要让我们的Realm提供认证和授权的的信息就需要继承这个类完成定制.

  • 相关阅读:
    多个漂亮的按钮样式和图片集合
    纯CSS3实现3D跳动小球
    visual studio 查找/替换对话框
    CSS实现弹出导航菜单
    javascript使浏览器关闭前弹出确认
    使用CSS3制作立体效果的导航菜单
    多个精美的导航样式web2.0源码
    jQuery实现侧边导航栏效果
    jQ函数after、append、appendTo的区别
    ASP.NET使用jQuery AJAX实现MD5加密实例
  • 原文地址:https://www.cnblogs.com/trekxu/p/9048636.html
Copyright © 2011-2022 走看看