描述 在使用shiro的时候,经常会有一种需求: 把登录成功后的用户对象存放到session中,方面其他地方调用.存放到session这个步骤到底应该在哪里去做,有几个地方比较合适: 调用 Subject.login() 的时候 使用 cas 进行单点认证的时候,集成 CasFilter 重写 onLoginSuccess() 方法 实现 AuthenticationListener 接口,实现 onSuccess 接口 以上三种方法,都可以做到登录成功以后把用户对象存放到session中,但是…
/** * 把用户保存到Cookie * * @param request * @param response * @param member */ private void rememberPwdAndUserName(HttpServletRequest request, HttpServletResponse response, Member member) { Long memberid = member.getMemberId(); String uuidMDKey = parseKe…
JShop简介:jshop是一套使用Java语言开发的B2C网店系统,致力于为个人和中小企业提供免费.好用的网店系统. 项目主页:http://git.oschina.net/dinguangx/jshop 在线演示: 前台: http://jshop.ofmall.org:81/jshop 后台: http://jshop.ofmall.org:81/jshop/manage/user/login (admin/123456) 在spring mvc中,为了随时都能取到当前请求的request…
比较常见的权限框架有两种,一种是Spring Security,另一种是Apache Shiro,两种框架各有优劣,个人感觉Shiro更容易使用,更加灵活,也更符合RABC规则,而且是java官方更推崇的安全验证框架.下面我将shiro的使用demo分享出来,能力所限,不到之处,请大家指正. Shiro框架的核心就三个部分Subject.SecurityManager.ShiroRealm,理论内容请自行百度. 1.准备工作 db -- -----------------------------…
1. 学习计划 第十一天: 1.sso注册功能实现 2.sso登录功能实现 3.通过token获得用户信息 4.Ajax跨域请求(jsonp) 2. Sso系统工程搭建 需要创建一个sso服务工程,可以参考e3-manager创建. e3-sso(pom聚合工程) |--e3-sso-interface(jar) |--e3-sso-Service(war) e3-sso-web 3. 服务接口实现 3.1. 检查数据是否可用 3.1.1. 功能分析 请求的url:/user/check/{pa…
 Apache Shiro Web Support  1. 配置 将 Shiro 整合到 Web 应用中的最简单方式是在 web.xml 的 Servlet ContextListener 和 Filter 中添加 shiro 的 ini 配置. 与 Spring 的整合(Spring-specific web configuration)在文末说明  1.1 web.xml Shiro 1.2 and later(Shiro 1.1及早期版本参照官方页面) <listener> <li…
Apache Shiro 漏洞汇总 以下是我个人通过收集信息收集起来的一些Apache Shiro漏洞信息,这些漏洞的poc都是公开的,利用起来也是比较简单 Apache Shiro是什么东西: Apache Shiro是美国阿帕奇(Apache)软件基金会的一套用于执行认证.授权.加密和会话管理的Java安全框架 漏洞信息 shiro 反序列化(cve_2016_4437) Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rem…
框架背景:开发框架采用vue,需要更好的SEO,更快的内容到达时间,从浏览器看不到对服务器的请求接口,选用开箱即用的nuxtjs. 问题背景:1. 前后分离,需前端存储token及登录后的用户信息: 2. vuex存储数据,当页面刷新时,数据会丢失: 3. 鉴于第一点,采用localstorage或sessionStorage存储数据,页面刷新,数据不会丢失,BUT,localStorage or sessionStorage 是浏览器的对象,服务端渲染页面时,会提示undefined(毕竟服务…
微信开发交流群:148540125 系列文章参考地址 极速开发微信公众号欢迎留言.转发.打赏 项目源码参考地址 点我点我--欢迎Start 极速开发微信公众号系列文章之如何一键导出微信所有用户信息到Excel 前方高能警告⚠️:用户信息导出我们需要使用以下权限以及接口 权限:必须微信认证(测试号也是可以的) 接口:1.获取用户列表 2.获取用户基本信息 以上链接点击可以查看相关文档 本文中用户导入到excel使用的是jxl,当然大家可以使用poi.如果不会使用jxl可以参考我之前写的 Java实…
这次主要用requests库和Beautifusoup库来实现对糗百的热门帖子的用户信息的收集,由于糗百的反爬虫不是很严格,也不需要先登录才能获取数据,所以较简单. 思路,先请求首页的热门帖子获得用户详情链接,然后请求用户详情页,用Beautifusoup解析得到基本的用户信息 代码: #!/usr/bin/env python # -*- coding:utf-8 -*- import requests import json import urllib3 import pymongo fro…
组管理 提示:创建组/删除组的终端命令都需要通过sudo执行 序号 命令 作用 01 groupadd组名 添加组 02 groupdel组名 删除组 03 cat/etc/group 确认组信息 04 chgrp –R 组名 文件/目录名 递归修改文件/目录的所属组 提示: 组信息保存在/etc/group文件夹中 /ect目录是专门用来保存系统配置信息的目录 修改完文件或者目录的所属组之后,此文件的组权限会变成rwx,这时候我们只需要将需要的用户添加都改组之中便有了改组具有的权限. 用户管理…
0x01 Apache Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 0x02 漏洞简介 2021年2月1日,Apache Shiro官方发布漏洞通告,漏洞编号为:CVE-2020-17523. 当Apache Shiro与Spring框架结合使用时,攻击者可以通过构造特殊的HTTP请求数据包,绕过身份认证匹配规则. 0x03 漏洞复现 环境搭建 使用tomcat部署shiro1.7.0.war包. 公众号回复shiro获取下载链接…
最近在使用shiro缓存用户的身份信息的时候,报了simpleByteSource不能序列化,跟进源码一看,原来这个类没有实现序列化的接口,但是我在缓存身份信息的实现又要用到这个类,解决方法:重写一个类,模仿着SimpleByteSoure这个类,写个自己的类.并且实现序列化接口即可·. package com.dzf.shiro; import org.apache.shiro.codec.Base64; import org.apache.shiro.codec.CodecSupport;…
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication) Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制 Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案 Apache shiro集群实现 (六)分布式集群系统下的高可用session…
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication) Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制 Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案 Apache shiro集群实现 (六)分布式集群系统下的高可用session…
说明 (1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate5.2.17.Final(6)MySQLDriver 5.1.47(7)MySQL 8.0.12 一.获取当前用户信息 1.1 从页面上显示当前登陆的用户名  <h1>欢迎使用Spring Security!      当前登录账号:<label th:text="${na…
方案一:采用jsp方式检测用户信息跳转 <%@ page language="java" pageEncoding="UTF-8"%> <%@page import="com.bim.bdip.cloud.home.model.BimUser"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+&quo…
1.pom文件 <dependencies> <!--eureka客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--zuul网关--> <dep…
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication) Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制 Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案 Apache shiro集群实现 (六)分布式集群系统下的高可用session…
最新项目比较忙,写文章的精力就相对减少了,但看到邮箱里的几个催更,还是厚颜把剩下的文档补上. 一.修改ShiroDbRealm类,实现它的doGetAuthorizationInfo方法 package org.shiro.demo.service.realm; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.apache.commons.lang.St…
序: 在上一篇中,咱们已经对于项目已经做了基本的配置,这一篇文章开始学习Shiro如何对登录进行验证. 教学: 一.Shiro配置的简要说明. 有心人可能注意到了,在上一章的applicationContext.xml配置文件中,包含以下配置. <!-- 項目自定义的Realm --> <bean id="shiroDbRealm" class="org.shiro.demo.service.realm.ShiroDbRealm" ><…
org.apache.shiro.session.UnknownSessionException: There is no session with id [xxxx]的解决方案 背景描述 SpringBoot项目,使用Shiro进行权限管理.测试过程中发现执行文件导入时最开始一切正常,但是导入几次之后再次执行导入就会报错,此时执行其他功能一切正常 排查过程 [x] 1. 网上搜索,大部分都是说法如下: Shiro的Cookie名称默认是JSESSIONID,与servlet容器冲突.修改Shi…
我们在上一遍文档中已经完成了Shiro验证功能.(http://www.cnblogs.com/nbfujx/p/7773789.html),在此基础上我们将完成分布式Session共享功能. Redis的使用 Maven Plugin添加Redis相关jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis…
ThreadLocal并不难理解,我总结的最简单的理解就是: ThreadLocal像其它变量一样(局部.全局.静态)也是一种变量类型,只是他是线程变量,更直白的说他是一种变量作用域,即他的作用域是当前线程(比如用户的一个请求算一个线程),ThreadLocal用于在一个线程间共享. ThreadLocal的set(String,Object)方法就是设置这个变量的名称.同时给这个变量赋值.当然同时也给予了这个变量的类型. @SuppressWarnings("unchecked")…
问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本 API和组件 - -   - -     背景 小程序一个比较重要的能力就是获取用户信息,也就是使用 wx.getUserInfo 接口.我们发现几乎所有的小程序都会调用这个接口.虽然我们在设计文档上有提出最好的设计是在真正要用户信息的情况下才去获取用户信息,不过很多开发者并没有按照我们的期望去做,导致用户在使用的时候有很多困扰. 归结起来有几点: 开发者在首页直接调用 wx.getUserInfo 进行授…
很多分布式缓存登录用户信息一般都是存在redis类似的缓存里面.其中实现细节或者拆分都是大同小异. 一般用户登录权限管理都用shiro处理. 如果仔细分应该就是一下3种. 1,有一个单独的用户权限管理平台.别的系统用户登录权限都再这个系统里面维护配置.登录后的用户信息存在redis. 2,每个系统都有自己独立的权限系统.都有自己的缓存存用户信息的登录用户信息和权限.但是用户登录的时候,一般都再redis上面存一份. 一个请求来了,先再本地缓存取,如果没有再去redis取.如果redis有,就更新…
一.背景 最近在整合了Spring+Shiro+Redis实现tomcat集群session共享的问题之后,发布以后运行以后发现老是会出现:org.apache.shiro.session.UnknownSessionException: There is no session with id [xxxx]的问题,具体问题如下截图: 二.出现这个问题的原因 只所以出现这个问题是因为在shiro的DefaultWebSessionManager类中,默认Cookie名称是JSESSIONID,这样…
1.遇到以下异常,找了好长时间,终于解决,报的异常如下: 七月 07, 2017 3:02:16 下午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet [SpringMVC] in context with path [/IMP] threw exception [org.apache.shiro.session.InvalidSessionException: java.…
问题描述: 在web项目中,我们经常将用户登录信息放在session中用来做后续的权限判断等操作,但最近在项目中发现一个奇怪的现象,session中的用户信息和登录时的信息有了差异. 原因: 在后台代码逻辑处理中,我对从session拿到的用户对象做了set属性操作,而session中保存的是对象的引用,当在后台代码中做了数据变更后,再从session中取值就是已经改变后的值.所以在后台代码中,我们在非特殊要求是下最好是不要操作session中的对象,应该重新建立一个对象或者拷贝该对象进行操作.…
转载自:http://blog.sina.com.cn/s/blog_4b5bc01101013gok.html ThreadLocal并不难理解,我总结的最简单的理解就是: ThreadLocal像其它变量一样(局部.全局.静态)也是一种变量类型,只是他是线程变量,更直白的说他是一种变量作用域,即他的作用域是当前线程(比如用户的一个请求算一个线程),ThreadLocal用于在一个线程间共享. ThreadLocal的set(String,Object)方法就是设置这个变量的名称.同时给这个变…