ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

shiro权限框架-入门基础

2021-03-16 09:33:29  阅读:188  来源: 互联网

标签:入门 System println 权限 SecurityUtils shiro subject


                         shiro权限框架

首先Shiro较之 Spring Security,Shiro在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。

Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。如下是它所具有的特点:

  1. 易于理解的 Java Security API;
  2. 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
  3. 对角色的简单的签权(访问控制),支持细粒度的签权;
  4. 支持一级缓存,以提升应用程序的性能;
  5. 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;
  6. 异构客户端会话访问;
  7. 非常简单的加密 API;
  8. 不跟任何的框架或者容器捆绑,可以独立运行。

 

首先想使用一个插件必不可少的就是他的jar包!

 

这里我推荐版本较高的shiro-core  1.5.0的版本

包导入成功后直接带大家进入一个简单的案例让了解shiro的登录和权限判断简单的认识shiro的强大功能

 

首先创建一个空的maven项目

注意:这里创建空的maven项目无需勾选webapp前端,前期先带大家了解一下shiro的运行流程暂且不涉及业务层

 

在这和大家扯一个题外话,可能大家创建了很多次maven项目时都不知道里面的groupID和ArtifactID是什么意思

groupid和artifactId被统称为“坐标”是为了保证项目唯一性如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。

 

创建成功后会得到一个这样的空maven项目

 

 

首先在resources文件夹中编写一个后缀名为.ini的文件,以.ini为后缀名的文件是项目中的配置文件,是整个项目共用的!

编写完文件中的内容后下面进入测试类测试shiro权限框架自带的登录判断和权限判断

我把shiro的登录判断分为了6步

//1.获取shiro.ini的信息获得工厂Factory<SecurityManager>
//2.初始化SecurityManager
//3.SecurityUtils.set将SecurityManager绑定到SecurityUtils
//4.Subject currentUser=SecurityUtils.getSubject();
//5. UsernameAndPasswordToken token =new UsernamePasswordToken("username","password")
//6.   subject.login(token);//1.若不报异常,则认证成功;2.若报异常则认证失败

首先你需要知道的是当你使用了shiro权限框架,就无需再去编写登录判断的方法
//5. UsernameAndPasswordToken token =new UsernamePasswordToken("username","password")

下面上代码

//1.获取shiro.ini的信息获取factory工厂
Factory<SecurityManager>securityManagerFactory = new IniSecurityManagerFactory("classpath:shiro.ini");

//2.初始化SecurityManager
SecurityManager securityManager = securityManagerFactory.getInstance();

//3.SecurityUtils.set将SecurityManager绑定到SecurityUtils
SecurityUtils.setSecurityManager(securityManager);

//4.Subject
Subject subject = SecurityUtils.getSubject();
Session session = subject.getSession();
session.setAttribute("message","loginTest");

if(!subject.isAuthenticated()) {
//5.UsernameAndPasswordToken
UsernamePasswordToken token = new UsernamePasswordToken("root", "secret");
try {
token.setRememberMe(true);
subject.login(token);
System.out.println("认证成功");

System.out.println("谁登录了:"+subject.getPrincipal());
if(subject.hasRole("admin")){
System.out.println("该"+subject.getPrincipal()+"具备admin角色");
}else{
System.out.println("该"+subject.getPrincipal()+"不具备admin角色");
}

//判断当前用户是否具备某个操作的权限
//若是在controller层 user/login user/add user/delete
//正准备做删除操作,在方法中,在删除之前,进行权限的认证
if(subject.isPermitted("admin:add")){
System.out.println("具备新增的权限");
}else{
System.out.println("不具备新增的权限");
}

}catch (Exception e){
System.out.println("认证失败");
}
}
//登出
subject.logout();

}
 

虽然知道了大致流程,但大家肯定不理解其中的方法是什么意思,下面我给大家一一解释

getInstance():获取实例
setSecurityManager():设置安全管理器
getSubject():获取对象
isAuthenticated():已通过身份认证
setRememberMe():设置记住我
login():登录(shiro中的角色令牌)
getPrincipal():获取登录角色
hasRole():具有什么角色
isPermitted():被允许使用什么权限
logout():登出(退出登录)


今天讲解的只是shiro权限框架中很简单的入门基础,下期将会讲解配合前端业务层来使用,预知后事如何,请看下集!

标签:入门,System,println,权限,SecurityUtils,shiro,subject
来源: https://www.cnblogs.com/www-dzsblogs-com/p/14541612.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有