Shiro安全框架初步了解

安全框架shiro

一、简介

1、Apache的强大灵活开药框架

2、提供认证、授权、企业会话管理、安全加密/

3、可以脱离spring简单灵活粒度较粗,没有的功能可以自己去拓展

二、了解的知识点

  1. shiro整体架构,各组件的概念
  2. shiro认证,授权的过程
  3. shiro自定义realm和filter
  4. shiro session管理
  5. shiro 缓存管理
  6. shiro 集成spring

三、整体架构

Shiro包含

主体subject

提交至securityManager(包含认证中心Authenticator、授权中心Authorizer、SecurityManger缓存管理、SecurityManger会话管理、内置realm------与数据文件交互获取数据(JdbcRealm/IniReam/ActiveDirectory/CustomRealm)

四、实现步骤测试代码(以下演示JdbcRealm情况下认证授权的写法):

1、pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>hjy-shiro</artifactId>
        <groupId>com.hjy</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>shiro-test</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.4.0</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
    </dependencies>


</project>

2、测试类(此处使用shiro内置JdbcRealm,自定义Realm可以在理解内置Realm之后自行编写)

/**
  *@author hjy
  *
  *单元测试
  */
public class JdbcRealmTest {


//1、构建SecurityManager环境

DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();


/*此处盛放realm例如:jdbcRealm  这个是shiro内置JdbcRealm,使用前先new出对象并配置数据库信息DruidDataSource,设置realm数据源*/

DruidDataSource dataSource = new DruidDataSource();
{
    dataSource.setUrl("jdbc:mysql://localhost:3306/test");
    dataSource.setUsername("root");
    dataSource.setPassword("root");
}

@Test
public void AuthenticatorTest() {

JdbcRealm jdbcRealm = new JdbcRealm();
jdbcRealm.setDataSource(dataSource);

jdbcRealm.setPermissionsLookupEnabled(true);

defaultSecurityManager.setRealm(jdbcRealm);

//2、主体提交请求认证

SecurityManagerUtils.setSecurityManager(defaultSecurityManager);

Subject subject = SecurityManagerUtil.getSubject();


//获取请求的令牌即用户名和密码组成的token

UsernamePasswordToken token = new UsernamePasswordToken();


// 用户登录验证

subject.login(token);

//判断是否认证成功

subject.isAuthenticated();

//用户登录登出(需要测试就去掉注释)   

//subject.logout()

//用户权限检测(需要测试就去掉注释)

//subject.checkPermission("user:update"); 

//注意:连接数据库的环境下需要开启权限开关即加上这句代码://jdbcRealm.setPermissionsLookupEnabled(true);

// 打印一下认证结果
System.out.println("isAuthenticated" + subject.isAuthenticated());


}

}

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值