shiro

base-framework 工程文档收录

百般思念 提交于 2019-12-05 01:12:07
1 shrio 实用功能说明 apache shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证、授权、加密、会话管理等功能。认证和授权为权限控制的核心,简单来说,“认证”就是证明“你是谁?” Web 应用程序一般做法是通过表单提交的用户名及密码达到认证目的。“授权”即是"你能做什么?",很多系统通过资源表的形式来完成用户能做什么。关于 shiro 的一系列特征及优点,很多文章已有列举,这里不再逐一赘述,本文首先会简单的讲述 shiro 和spring该如何集成,重点介绍 shiro 的几个实用功能和一些 shiro 的扩展知识。 1.1 shiro 集成 spring 由于 spring 在 java web 应用里广泛使用,在项目中使用 spring 给项目开发带来的好处有很多,spring 框架本身就是一个非常灵活的东西,而 shrio 的设计模式,让 shiro 集成 spring 并非难事。 首先在web.xml里,通过 spring 的 org.springframework.web.filter.DelegatingFilterProxy 定义一个 filter ,让所有可访问的请求通过一个主要的 shiro 过滤器。该过滤器本身是极为强大的,允许临时的自定义过滤器链基于任何 URL 路径表达式执行。 web.xml: <!-- shiro

Apache Shiro 使用手册(一)Shiro架构介绍

蓝咒 提交于 2019-12-05 01:11:39
一、什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户“登录”; 授权 - 访问控制; 密码加密 - 保护或隐藏数据防止被偷窥; 会话管理 - 每用户相关的时间敏感的状态。 对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。 二、Shiro的架构介绍 Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。 Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。 SecurityManager: 它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。 Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。 从这个意义上讲

shiro实现多用户表多Realm统一登录认证

风流意气都作罢 提交于 2019-12-05 01:11:25
前言 说明一下需求,最近做的平台,有多张用户表,怎么根据不同用户登录去执行自己查询不同数据库并实现认证的业务逻辑呢? 博主参与的产品开发进入阶段性完成期,有时间将过程中遇到的相关问题一一总结。 总结 实现本需求,首先是从Subject入手,它是完成shiro登录过程的入口,login(UsernamePasswordToken)方法完成用户名密码传递,后面自己实现Realm去认证登录,关键就在如何区分这些用户名密码是对应哪个数据库表,若有一个状态去判断它们,则可以解决问题。 设计上的反思 其实从实际参与这个大产品开发之后,越来越发现,它不便于我们对各类用户的管理,虽然做了很多针对shiro的扩展去实现自己想要的功能,但渐渐明白为什么shiro不提供这样的解决方案。 这里,博主也建议,用户表可以有多个,但登录认证的表其实只保留一个就好,将你的多Realm抽象出来一个关系表映射,将各种状态加入,登录等认证交由统一维护,具体信息查询等封装抽象,下面做对应实现即可,这样才应该是跨平台的,以后也只需要存储跟别的平台的用户关系绑定,就完成了登录。 正文 shiro标准的登录过程是用户在Controller里创建UsernamePasswordToken对象,然后绑定上前端访问过来的账号密码,之后由Subject.login(UsernamePasswordToken)完成登录

轻松带你走进shiro的世界

懵懂的女人 提交于 2019-12-05 01:10:41
1.10分钟带你轻松入门shiro Shiro是apache旗下的一款轻量级的Java安全框架,它可以提供如下服务: Authentication(认证) Authorization(授权) Session Management(会话管理) Cryptography(加密) 接下来我们来一起进入shiro的世界吧 第一步: 在pom.xml文件中添加以下依赖: <!-- Shiro --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.3</version> </dependency> 第二步: 在classpath文件下添加shiro.ini文件: [users] shiro = 201314 第三步:认识一下shiro的认证服务,写一个main方法测试一下: package com.simple.shiro; import org.apache.log4j.Logger; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc

Shiro complaining “There is no session with id xxx” with DefaultSecurityManager

安稳与你 提交于 2019-12-05 00:15:32
I'm using Apache Shiro 1.2.0 in a long-running application that reads messages from a queue and and takes action. The action taken requires a Shiro authenticated session, so I've implemented an "ActAsAuthenticationToken" and custom credentials matcher which allows us to login in with only the username. I'm using the DefaultSecurityManager with only my custom realm and subject factory injected. Everything else should be default. As it is configured, everything worked fine for a while, but as the application ran a long time (not that long - like a full day) I started to get this stack trace

Apache Shiro “with JSF 2.0” ! How does it go?

大城市里の小女人 提交于 2019-12-04 23:46:59
问题 I am looking for frameworks/solution for authentication/ user-login management/ security in java web application that can make the naive developer's job easier/faster and make the application relatively more secured against potential threats. As some people have suggested me to consider solutions like Spring Security & Apache Shiro, I wanted to know how does it go with JSF 2.0 . Are there any downsides of using Shrino over Spring security for my case? Any other better security solutions for

shiro学习(四、shiro集成spring+springmvc)

只谈情不闲聊 提交于 2019-12-04 23:31:29
依赖:spring-context,spring-MVC,shiro-core,shiro-spring,shiro-web 实话实说:web.xml,spring,springmvc配置文件好难 大致效果 代码结构(使用web骨架构建) pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId>

Java面试必备技能

纵饮孤独 提交于 2019-12-04 23:12:20
前言 又到了一年一度的面试高峰期,想当年这会,博主也是疯狂的投简历,可能是运气比较好,一面即过,哈哈哈哈,在这里,给大家总结一下,面试互联网公司必会的一些技能,这里只针对刚毕业的小伙伴,高手勿喷。 Java基础 Java基础囊括的满多的,一般对于刚刚毕业的学生以下几个知识点为重点 1、字符串的操作 2、循环和判断组合的逻辑 3、对象的特性 4、集合的应用 5、开发模式(一般掌握四五种就差不多了) 6、线程的使用 7、数据库的操作 这些想必小伙伴们都不在话下,这里只是笼统的概括一下,如果有精力可以深入的去学习一下集合的实现原理,以及线程锁相关(为了能和面试官吹下去) JavaEE部分 JavaEE部分的东西相对来说并不是特别多,也不是很难理解,掌握如下即可 1、tomcat的安装配置以及使用 2、九大内置对象 3、Servlet 4、MVC模式 5、EL表达式 6、过滤器与监听器 7、数据库连接池(搞一个会用即可) 对于前台的一些技能比如html,css,js,jquery...等等,这些就不提了 SSM框架 SSM框架也就是Spring,SpringMvc,Mybatis三大框架 虽然说现在最新的框架并不是他们,但是最为一名毕业生,这三大框架是必须学会的,目前依然有很多项目并非采用最新的微服务等等,依然采用ssm框架进行开发。 关系型数据库 目前主流的关系型数据库基本为 mysql

shiro学习(一)

坚强是说给别人听的谎言 提交于 2019-12-04 20:50:53
基础依赖: shiro-core,junit(因为在单元测试中) test.class public class AuthenticationTest { SimpleAccountRealm realm = new SimpleAccountRealm(); @Before public void addUser(){ realm.addAccount("mark","123456"); } @Test public void testAuthentication(){ //1.构建securityManager环境 DefaultSecurityManager securityManager = new DefaultSecurityManager(); securityManager.setRealm(realm); //2.主体提交认证请求 SecurityUtils.setSecurityManager(securityManager); Subject subject = SecurityUtils.getSubject(); //获取主体之后,就提交认证 UsernamePasswordToken token = new UsernamePasswordToken("mark","123456");      //退出认证 subject.login(token);

How to check that user has already logged in using Apache Shiro?

一个人想着一个人 提交于 2019-12-04 19:27:20
The question is very simple. I'd like to restrict user access with same login from different machines/browsers: only one live user session is possible. Apache shiro library is used for user authentification and managment. Of course this could be done using simple synchornized maps and etc. But the question is: Has Apache Shiro special mechanisms for that or not? Another variant of this question: how to reveice the list of all subjects who are logged in the system using apache shiro ? UPD: To clarify my question. My desire is to have some code like this (I known, that there isn't such class