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提供认证和授权的的信息就需要继承这个类完成定制.

  • 相关阅读:
    信号实现父子进程之间的同步sigsuspend的作用
    java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较
    [置顶] iOS学习笔记45—本地通知UILocalNotification
    没有母亲的母亲节似乎来得早一些
    poj 2007 Scrambled Polygon(凸多边形顶点输出)
    MySQL架构设计相关的方式方法和软件介绍
    1、单机运行环境搭建之 --CentOS6.9安装配置JDK7
    更改root密码一例
    3、单机运行环境搭建之 --CentOS6.5安装配置Tengine
    Tomcat7 安装使用及jvm连接数参数调优
  • 原文地址:https://www.cnblogs.com/trekxu/p/9048636.html
Copyright © 2011-2022 走看看