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

      步骤:apache

  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程序maven

 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方法测试。ide

相关文章
相关标签/搜索