zoukankan      html  css  js  c++  java
  • shiro入门

    1.shiro简介

      Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

    2.主要功能

    三个核心组件:Subject, SecurityManager 和 Realms.
    Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。
      Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
      SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
      Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
      从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
      Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。
      

    3.Shiro入门Helloword

          步骤:

      3.1.构建基本maven项目

      

      3.2.添加必要的maven依赖

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>com.wfd360.shiro-demo</groupId>
     8     <artifactId>shiro-demo</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10     <dependencies>
    11         <dependency>
    12             <groupId>org.apache.shiro</groupId>
    13             <artifactId>shiro-core</artifactId>
    14             <version>1.3.2</version>
    15         </dependency>
    16 
    17     </dependencies>
    18 
    19 </project>
    View Code

      3.3.添加账号信息(模拟数据库账号)

       

      3.4.helloWord程序

     1 package com.wfd360.shiro;
     2 
     3 import org.apache.shiro.SecurityUtils;
     4 import org.apache.shiro.authc.AuthenticationException;
     5 import org.apache.shiro.authc.UsernamePasswordToken;
     6 import org.apache.shiro.config.IniSecurityManagerFactory;
     7 import org.apache.shiro.mgt.SecurityManager;
     8 import org.apache.shiro.subject.Subject;
     9 import org.apache.shiro.util.Factory;
    10 import org.slf4j.Logger;
    11 import org.slf4j.LoggerFactory;
    12 
    13 
    14 /**
    15  * address: www.wfd360.com
    16  */
    17 public class HelloShiro {
    18     private static Logger logger = LoggerFactory.getLogger(HelloShiro.class);
    19 
    20     public static void main(String[] args) {
    21         //IniSecurityManagerFactory方法在1.4.0中被注解标志为不建议使用
    22         // 读取配置文件,初始化SecurityManager工厂
    23         Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
    24         //获取securityManager 实例
    25         SecurityManager securityManager = factory.getInstance();
    26         //把securityManager实例绑定到SecurityUtils
    27         SecurityUtils.setSecurityManager(securityManager);
    28         //得到当前执行的用户
    29         Subject subject = SecurityUtils.getSubject();
    30         //认证实体,当前进来的用户
    31         // 创建token令牌,用户名/密码
    32         UsernamePasswordToken token = new UsernamePasswordToken("jack", "12345");
    33         //身份认证
    34         try {
    35             subject.login(token);
    36             logger.info("登录成功!");
    37         } catch (AuthenticationException e) { //login的接口函数
    38             //void login(AuthenticationToken var1) throws AuthenticationException;所以直接抓AuthenticationException异常即可 /
    39             // 身份认证失败即抛出此异常
    40             logger.info("登录失败!");
    41             e.printStackTrace();
    42         }
    43         //登出
    44         subject.logout();
    45     }
    46 }
    View Code

      3.5运行main方法测试。

         

     
  • 相关阅读:
    JavaScript+运算符总结
    【总结】HTMl5的sessionStorage和localStorage
    移动H5前端性能优化指南(转自ISUX)
    最新个人H5游戏大作——《择花的少女》
    类似天猫那样的侧边导航栏的快速实现
    JQuery实现banner图片的轮播效果
    实现数字电视机顶盒画面的纯键盘和遥控操作网页
    广播的动态静态注册
    Activity 与 fragment 生命周期
    activitycollector
  • 原文地址:https://www.cnblogs.com/newAndHui/p/9869454.html
Copyright © 2011-2022 走看看