Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、受权、密码和会话管理。使用Shiro的易于理解的API,您能够快速、轻松地得到任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。数据库
步骤: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>
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 }
3.5运行main方法测试。ide