Apache Shiro In Easy Steps With Spring Boot(一)

简介: Apache Shiro In Easy Steps With Spring Boot(一)

Chapter 01 什么是权限控制

Section 01 - 权限控制的概念

  权限控制就是对用户访问系统的控制,按照用户的角色等控制用户可以访问的资源或者可以执行的操作,因此权限控制分为多种如功能权限控制,数据权限控制及管理权限控制

Servlet实现权限控制

  Servlet中通过实现自定义的Filter来实现权限控制,设定好哪些URL地址是需要授权才可以访问的,针对这些URL地址的访问进行拦截,校验用户信息是否符合访问该URL的资格,从而实现权限的控制,Spring Security的用户认证也是实现了Servlet中的Filter来实现的。

JavaWeb实现自定义的权限控制,这种实现方式比较简单,但是不规范,不易管理

@PostMapping("/category/add")
public ApiRestResponse addCategory(HttpSession session, @RequestBody AddCategoryReq addCategoryReq){
    if (addCategoryReq.getName() == null || addCategoryReq.getType() == null || addCategoryReq.getOrderNum() == null){
        return ApiRestResponse.error(MallExceptionEnum.NAME_NOT_NULL);
    }
    // 校验身份
    User currentUser = (User) session.getAttribute(Constant.MALL_CURRENT_USER);
    if (userService.checkAdminRole(currentUser)){
        categoryService.add(addCategoryReq);
        return ApiRestResponse.success();
    } else {
        return ApiRestResponse.error(MallExceptionEnum.NEED_ADMIN);
    }
}
复制代码

Section 02 - RBAC 和 ACL 的概念

在另一篇Spring Security 中有关于RBAC的介绍,并且通过自定义user表,role表,user和role中间表实现了RBAC权限模型,Apache Shiro框架也是基于RBAC模型来实现认证与授权的。另一种权限控制模型是ACL即访问控制列表Access Control List,ACL权限模型核心是用户与权限直接挂钩,这样就造成了权限的复杂性分散性,不宜管理。

Section 03 - Apache Shiro VS Spring Security

Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.

Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements

Spring Security是基于Spring Framework 核心的一个 可以提供声明式的安全访问控制解决方案的框架

Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any application – from the smallest mobile applications to the largest web and enterprise applications.

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

Spring Security基于Spring Framework可以很好的与Spring应用程序整合,且支持OAuth Apache Shiro是独立的且拥有非常简洁的API,使用更简单,但是不支持OAuth,需要单独实现

Section 04 - Apache Shiro Overview

Shiro provides the application security API to perform the following aspects (I like to call these the 4 cornerstones of application security):

  • Authentication - proving user identity, often called user ‘login’.
  • Authorization - access control
  • Cryptography - protecting or hiding data from prying eyes
  • Session Management - per-user time-sensitive state Shiro提供四大核心模块,身份认证,授权,加密,会话管理

b3ebc62435ef43f3aaffdd3a479f8a70_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

Section 05 - Core Concepts

  • Subject:用户或者程序称为主体(如用户,第三方服务,cron作业),主体去访问系统或者资源
  • SecurityManager:安全管理器,Subject的认证和授权都要在安全管理器下进行
  • Authenticator:认证器,主要负责Subject的认证
  • Realm:域,Shiro和安全数据的连接器,好比jdbc连接数据库; 通过realm获取认证授权相关信息
  • Authorizer:授权器,主要负责Subject的授权, 控制subject拥有的角色或者权限
  • Cryptography:加解密,Shiro的包含易于使用和理解的数据加解密方法,简化了很多复杂的api
  • Cache Manager:缓存管理器,比如认证或授权信息,通过缓存进行管理,提高性能

image.png


相关文章
|
5月前
|
安全 Java Apache
SpringBoot+Shiro(一)
SpringBoot+Shiro(一)
|
1月前
|
XML JavaScript Java
SpringBoot集成Shiro权限+Jwt认证
本文主要描述如何快速基于SpringBoot 2.5.X版本集成Shiro+JWT框架,让大家快速实现无状态登陆和接口权限认证主体框架,具体业务细节未实现,大家按照实际项目补充。
80 11
|
3月前
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
108 5
|
3月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
84 1
|
4月前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
78 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
4月前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
203 2
Springboot+shiro,完整教程,带你学会shiro
|
4月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
914 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
4月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
73 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
3月前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
90 0
|
6月前
|
Java Maven Spring
SpringBoot 系列之 Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resource
这篇文章描述了在使用Maven构建Spring Boot项目时遇到的`maven-resources-plugin`插件版本问题导致的编译失败,并提供了通过修改插件版本至3.1.0来解决这个问题的方法。
SpringBoot 系列之 Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resource

热门文章

最新文章

推荐镜像

更多