securitymanager

关于----身份验证--shiro

↘锁芯ラ 提交于 2019-11-29 05:00:42
Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证,授权,企业会话管理和加密等。Shiro的具体功能点如下: (1)身份认证/登录,验证用户是不是拥有相应的身份; (2)授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; (3)会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE 环境的,也可以是如Web环境的; (4)加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; (5)Web支持,可以非常容易的集成到Web环境; Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率; (6)shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; (7)提供测试支持; (8)允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; (9)记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录 jar包 <!-- shiro所需架包 --> <dependency> <groupId>org

Shiro的几个关键类

有些话、适合烂在心里 提交于 2019-11-29 03:32:08
Shiro在于Spring集成中,需要配置SecurityManager,Realm,ShiroFilterFactoryBean这三个类。在Web环境中SecurityManager一般配置DefaultWebSecurityManager,如果需要扩展或者定制一些额外的功能,可以配置DefaultWebSecurityManager的继承类;Realm需要先继承AuthorizingRealm抽象类再配置,如果有多个Realm的话,还需要配置ModularRealmAuthenticator的继承实现类;ShiroFilterFactoryBean主要是提供ShiroFilter,可以配置一些资源的拦截。下面对一些核心类进行一下总结。 SecurityManager 该类继承了三个接口,还额外提供登录,退出和创建用户的功能。 /** * 所有与安全有关的操作都会与SecurityManager交互 * 扩展了authenticator、authorizer和sessionmanager接口 */ public interface SecurityManager extends Authenticator, Authorizer, SessionManager { Subject login(Subject subject, AuthenticationToken

shiro、ehcache教程

烈酒焚心 提交于 2019-11-28 19:28:25
权限概述(认证、授权) 系统提供了很多功能,并不是所有的用户登录系统都可以操作这些功能。我们需要 对用户的访问进行控制 。 登录用户-【超级管理员】-【客服】-【快递员】-【人事】- 【财务】-角色 认证:系统提供的用于识别用户身份的功能(通常是登录功能)----- 让系统知道你是谁 授权:系统提供的赋予用户访问某个功能的能力----- 让系统知道你能做什么 常见的权限控制的方式 第一种:URL拦截权限控制(基于过滤器或者拦截器) 第二种:方法注解权限控制(基于代理技术) 权限模块数据模型 权限的表设计 用户表:t_user 用户角色关系表:user_role 角色表:auth_role 角色权限关系表:role_function 权限表:auth_function apache shiro Apache Shiro 简介 是一个强大而灵活的开源安全框架,它能够干净利落地 处理身份认证,授权,企业会话管理和加密 。 使用 Shiro,您就能够为您的应用程序提供安全性而又无需从头编写所有代码。 官网: http://shiro.apache.org/ 提供的功能 Apache Shiro 能做的事情 验证用户 对用户执行访问控制,如: 判断用户是否拥有角色admin。 判断用户是否拥有访问的权限 在任何环境下使用 Session API。例如CS程序。 可以使用多个用户数据源

怎么看java源代码

你。 提交于 2019-11-28 16:48:34
妈的,开发快 7 年了,源代码一致不知道怎么看,由于自己不是计算机专业的, 必要后只是简单的 java 培训了下,没有很好的编程功底,导致遇到很多问题,没有找到正确的处理方式,也怪自己懒, 3 天打网两天晒鱼,自己就是那种遇到问题,解决了事的那种人,当然以前工作的确也太忙了,外包项目一直做,知道的挺多了,但是都不精,本着完成任务了事的态度,没有积累;看源代码基本上就是使用 crtl+t 找进入 jar 包看下,但是如果遇到一个方法多个实现的时候,基本上都不知道,真正的实现类是那个了 通过这段时间的总结:大体知道了一点,看源代码主要有几点: 1 、需要了解基本的 java 的 23 种 设计模型, 2 、需要了解框架的真正实现类 [ 配置与运行结合看 ] 3 、多找一些源码包进行解析:如: tomcat 的源码: https://tomcat.apache.org/download-90.cgi 下面举一个例子: 看 shiro 框架 : 如实现登录认证的那块: import org.apache.shiro.SecurityUtils ; 首先要知道: subject 真正的实现类: subject = ( new Subject.Builder()).buildSubject() ; SecurityManager :是一个接口,需要找到对应的实现类: 接口是什么,就是一种规范

SpringBoot与Shiro整合权限管理实战

别说谁变了你拦得住时间么 提交于 2019-11-28 12:33:51
SpringBoot与Shiro整合权限管理实战 作者 : Stanley 罗昊 【 转载请注明出处和署名,谢谢! 】 *观看本文章需要有一定SpringBoot整合经验* Shiro框架简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序, 从最小的移动应用程序到最大的网络和企业应用程序。 分析Shiro的核心API 其实,Shiro的核心类有三个,分别是: 1.Subject:这个类呢,我们称之当前用户的主体,这个用户的主体包含了登陆、注销等等的一些方法,还有一些判断授权的一些方法; 2.SecurityManager:这个名称翻译过来就是,安全管理器的意思; 3.Realm:这个Realm呢其实我们Shiro去链接数据库的一个桥梁,因为,我们的程序需要去操作数据库去获取一些用户的信息,这些操作都需要Realm去完成; 这个三个API呢,都存在一些关系,比如.SecurityManager是需要去关联我们的Realm,Subject是需要把操作交给我们的SecurityManager,总结下来就是,Subject是需要去管理我们的SecurityManager,而SecurityManager去关联我们的Realm;

springboot整合shiro应用

╄→гoц情女王★ 提交于 2019-11-28 11:35:34
1、Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、授权、加密、会话管理,与spring Security 一样都是做一个权限的安全框架,但是与Spring Security 相比,在于 Shiro 使用了比较简单易懂易于使用的授权方式。shiro属于轻量级框架,相对于security简单的多,也没有security那么复杂。所以我这里也是简单介绍一下shiro的使用。 2、非常简单;其基本功能点如下图所示: Authentication : 身份认证/登录,验证用户是不是拥有相应的身份; Authorization : 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager : 会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的; Cryptography : 加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Web Support : Web支持,可以非常容易的集成到Web环境; Caching :缓存,比如用户登录后,其用户信息、拥有的角色

Shrio使用Jwt达到前后端分离

核能气质少年 提交于 2019-11-28 10:44:55
概述 前后端分离之后,因为HTTP本身是无状态的,Session就没法用了。项目采用jwt的方案后,请求的主要流程如下:用户登录成功之后,服务端会创建一个jwt的token(jwt的这个token中记录了当前的操作账号),并将这个token返回给前端,前端每次请求服务端的数据时,都会将令牌放入Header或者Parameter中,服务端接收到请求后,会先被拦截器拦截,token检验的拦截器会获取请求中的token,然后会检验token的有效性,拦截器都检验成功后,请求会成功到达实际的业务流程中,执行业务逻辑返回给前端数据。在这个过程中,主要涉及到Shiro的拦截器链,Jwt的token管理,多Realm配置等。 Shiro的Filter链 Shiro的认证和授权都离不开Filter,因此需要对Shiro的Filter的运行流程很清楚,才能自定义Filter来满足企业的实际需要。另外Shiro的Filter虽然原理都和Servlet的Filter相似,甚至都最终继承相同的接口,但是实际还是有些差别。Shiro中的Filter主要是在ShiroFilter内,对指定匹配的URL进行拦截处理,它有自己的Filter链;而Servlet的Filter和ShiroFilter是同一个级别的,即先走Shiro自己的Filter体系

springboot整合shiro安全框架

谁说我不能喝 提交于 2019-11-28 00:38:05
一、shiro简介 概述 apache shiro 是java的一个轻量级的安全框架,功能没有spring security全面,但对于一般的的项目已经足够。其最大的优点是易于上手,所以大多的公司都会用shiro. Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等 组件 Subject :主体,可以是任何能与应用交互的 “用户”; SecurityManager :相当于 SpringMVC 中的 DispatcherServlet;是 Shiro 的心脏;它管理着所有 Subject、且负责进行认证和授权、及会话、缓存的管理。 Authenticator :认证器,负责主体认证的, Shiro 提供默认,但也可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了; Authrizer :授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能; Realm :可以有 1 个或多个 Realm,用于获取安全实体的;可以是 JDBC 实现,也可以是 LDAP 实现,或者内存实现等等;由用户提供; 注意:Shiro 不知道你的用户 / 权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的 Realm; SessionManager

shiro中权限注解原理分析

感情迁移 提交于 2019-11-28 00:33:17
概述 前不久刚学会使用权限注解(),开始思索了一番。最开始猜测实现方式是注解@Aspect,具体实现方式类似如下所示(切面记录审计日志)。后来发现并非如此,所以特地分析一下源码。 @Component @Aspect public class AuditLogAspectConfig { @Pointcut("@annotation(com.ygsoft.ecp.mapp.basic.audit.annotation.AuditLog) || @annotation(com.ygsoft.ecp.mapp.basic.audit.annotation.AuditLogs)") public void pointcut() { } @After(value="pointcut()") public void after(JoinPoint joinPoint) { //执行的逻辑 } ... } 权限注解的源码分析 DefaultAdvisorAutoProxyCreator 这个类实现了 BeanProcessor 接口,当 ApplicationContext 读取所有的Bean配置信息后,这个类将扫描上下文,寻找所有的 Advistor (一个 Advisor 是一个切入点和一个通知的组成),将这些 Advisor 应用到所有符合切入点的Bean中。

shiro Apache 框架的学习之authentication 和authorization

耗尽温柔 提交于 2019-11-27 22:31:51
shiro 作为Apache的开源项目。该框架下的主要模块包含如下:     1, Subject     2, SecurityManager     3, Authenticator     4,Authorizer     5,Realm     6,SessionManager     7,SessionDao     8,CacheManager     9,Cryptography 源码下载链接: http://shiro.apache.org/download.html 详见官网。     如下以版本1.4学习为主。     shiro 作为java security framework, 其特点参考官网和百科。     如下以例子用户登录做authentication开篇介绍。     编写如下伪代码: //伪代码... class Controller{ ... ModelAndView login(Customer c){ Subject s = SecurityUtils.getSubject() UsenamePasswordToken token = new U...(c); try{s.login(token);} catche(..){..} .. } } 例子是个简单的login的Controller,使用SpringMVC的思想。