shiro的过滤器架构——Shiro学习(5)
shiro的过滤器组织非常庞大,如下图: [ ]() NameableFilter代表的是命名规范,旨在为每一个过滤器命名。提供setName()和getName()接口。 OncePerRequestFilter,确保在一次请求中只通过一次filter。定义了一个doFilterInternal(
shiro的过滤器组织非常庞大,如下图: [ ]() NameableFilter代表的是命名规范,旨在为每一个过滤器命名。提供setName()和getName()接口。 OncePerRequestFilter,确保在一次请求中只通过一次filter。定义了一个doFilterInternal(
看此文之前,应先看上篇文章[shiro的身份认证原理](),因为授权和认证的架构、流程、原理都是差不多的。它涉及到Subject、SecurityManager、Authorizer、Realm这几个概念,跟认证相比,仅仅是将Authenticator换成了 Authorizer 。 shiro的授
首先,有必要回顾下重要的概念—— subject 相当于用户主体 principals 相当于用户名 credentials 相当于用户密码 realms 相当于访问数据库用户身份数据的DAO,在这里可进行用户信息校验 来看shiro的登录操作—— ` Userna
用最简单的api,搭建一个最简单的demo。首先建立一个maven项目,pom文件如下: ` <properties<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding</properties<build<plug
一、shiro主要做什么? 1. 身份验证 2. 授权访问 3. 加密 4. 会话管理 二、shiro权限框架的基本开发路线 无论是spring-security还是shiro,权限框架的基本开发路线是围绕“当前用户是谁?这个用户能做什么?”这两个问题进行的。 三、核心概念*1. Subject 主
java操作PDF,有一个很好用的工具——pdfbox。只需要引入依赖,即可使用。 ` <dependency<groupId>org.apache.pdfbox</groupId<artifactId>pdfbox-app</artifactId<version>2.0.21</v
使用redis缓存,通常会考虑到与数据库数据保持一致的问题。 ` public void update(){ updateCache();//更新缓存 updateDb();//更新数据库 } ` 这段代码中,如果更新缓存失败了会抛出异常,那么数据库就不会被更新,缓存一致性得到保障。但是如果
今日测试服上发现了一个堆内存问题,想要用jvisualvm远程连接jmx过去查看,但是发现连接失败了。 我赶紧查看服务器上的jvm参数,参数正常—— ` -Djava.rmi.server.hostname=192.168.12.17 -Dcom.sun.management.jmxremote.p
项目运行环境有三种,开发环境、测试环境、生成环境,在springboot项目中对应着三个配置文件,application.properites,application-dev.properites, application-prod.properites。 在部署时,用命令运行springboot的
近期写了一个jar包,放在了maven中心仓库,主要用途是:可在普通tomcat项目、springboot项目、spring-security项目上获取在线用户数量的java组件。 详细的原理介绍和用途、用法在我的另一篇博客中有写——[SpringBoot、security获取在线用户数量]()。
本文主要参考自: [https://zhuanlan.zhihu.com/p/113917726]() 为什么需要索引? 假设有1000条数据,id是1、2、3、...1000,如果没有索引,那么查找id=1000的记录,需要从1到1000遍历所有记录,查找效率极低。 怎样的数据结构适合做索引 很
简介 众所周知,synchronize能够保证数据操作的原子性,从而实现同步效果。但是这种通过多个线程竞争锁的方式其效率会比较差,于是java另外实现了另一种无锁的却能保证数据操作原子性的方式——CAS(Compare-and-swap)。 CAS的原理 Compare-and-swap,是一个针对