【Shiro】--- 简介
最近的权限框架,都是采用shiro来进行用户和角色的权限认证,听的多了,感觉自己不会有点说不过去,就在这里学习一下,作为简单了解,等到以后用到也不会抓瞎。
简单介绍:
Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以为任何应用提供安全保障。
- 认证---用户身份识别,常被称为用户“登录”
- 授权---访问控制,可以对url授权,也可以对角色授权
- 密码加密---保护或隐藏数据防止被偷窥----shiro自带许多加密的工具类,功能很强大
- 会话管理---每用户相关的时间敏感的状态
网上有很多大神,对shiro的讲解很好,这里就引用一下,自己就不做再次介绍了:
http://jinnianshilongnian.iteye.com/blog/2018936/
咱们从一个Helloworld程序来简单了解一下shiro。
首先,咱们没有库,所以得设置一个realm,用来访问权限数据。
Realm的意思是域,shiro从realm中获取验证数据,它有很多种类,如jdbc.realm,jndi.realm,text.realm。
这里咱们采用的是text.realm。
先定义一个realm:
shiro.ini:
在maven中添加依赖:
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.4</version> </dependency>
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency> |
然后建立一个HelloWorld类,写一个Main方法:
package com.java1234.shiro;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory;
public class HelloWorld { public static void main(String[] args){ //读取配置文件初始化SecurityManager工厂 Factory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro.ini"); //获取securityManager实例 SecurityManager securityManager=factory.getInstance(); //把securityManager实例绑定到SecurityUtils SecurityUtils.setSecurityManager(securityManager); //得到当前执行的用户 Subject currentUser=SecurityUtils.getSubject(); //创建token令牌,用户名/密码。相当于在页面输入用户名和密码 UsernamePasswordToken token=new UsernamePasswordToken("java1234", "123456"); try{ //身份认证 currentUser.login(token); System.out.println("身份认证成功!"); }catch(AuthenticationException e){ e.printStackTrace(); System.out.println("身份认证失败!"); } //退出 currentUser.logout(); }
} |