shiro

Spring整合shiro授权

夙愿已清 提交于 2019-11-29 23:17:14
授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限。 :::tip 注意 注意:授权是基于认证基础之上的 ::: 授权的三种方式 编程方式:如使用if判断当前subject是否有权限,这种方法判断时候实际上已经进入了方法内部。 注解方式 :在方法上添加权限注解,在进入方法前进行验证。 jsp标签方式:通过shiro提供的jsp标签根据权限确定是否对用户显示按钮等操作,如果直接根据url方式请求则可以直接访问不需要授权。 授权步骤 1.在需要授权的方法上添加@RequirePermission注解 在使用注解时需要注意三点:①注解本身,必须要定义个注解 ②被注解的类,的注解要放在方法上还是类上 ③怎样才能让注解生效 比如我在查询列表上添加 @RequiresPermissions("user:list") 注解,就表示访问这个方法需要用户拥有user 的llist权限才能访问,否则就会抛出 UnauthorizedException 这个异常。 2.在spring-shiro文件中配置代理类解析注解 <!-- 开启aop,对类代理 --> <aop:config proxy-target-class="true"></aop:config> <!--

Spring整合shiro认证

瘦欲@ 提交于 2019-11-29 23:17:14
1.需要的依赖 <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core<

Remove jsessionid from URL

偶尔善良 提交于 2019-11-29 22:24:08
I'm working on a project with the following technologies: Spring ShiroFilter PrettyFaces Tomcat server While I'm deploying it on tomcat server, I'm getting a "JSESSIONID 456jghd787aa" added at the end of the URL. I was trying to resolve this but I'm not able to do that. For tomcat 7 add this to web.xml <session-config> <!-- Disables URL-based sessions (no more 'jsessionid' in the URL using Tomcat) --> <tracking-mode>COOKIE</tracking-mode> </session-config> The following filter may solve your problem (from http://randomcoder.org/maven/site/randomcoder-website/cobertura/org.randomcoder.security

记安全测试那些事

落爺英雄遲暮 提交于 2019-11-29 21:37:33
安全测试又来了。。。。。 第一次 登录请求 要求登陆过一次不能重复登录 跟测试杠了好久 还是按照人家要求改了。 这次 安全测试更多的都是一些 遗漏的问题 开发环境都没配置 加上就好了。 1. 使用普通用户yscs 1 去执行字典管理的P OST 修改请求,可成功修改,故存在垂直越权漏洞。 解决方案: spring security 和shiro加上权限角色校验即可。 2.未授权访问漏洞 解决方案: 测试要求静态资源也不能访问。权限框架加上拦截就行 3. 发现系统存在缓慢HTTP POST DoS攻击漏洞(Slow HTTP Denial Of Service Attack)。 解决方案:用的tomcat 。测试用了个工具模拟缓慢请求。修改tomcat 连接数和 connectionTimeOut就行 改短点。实际上应该 加上 ip和超时限制。 4.跨站请求访问漏洞 解决方案: 1、请求中增加token验证。2、验证请求头中的referer。 没别的 加拦截器 、过滤器校验就行 5. 发现系统cookie未设置httponly标签 解决方案:设置cookie 的httponly属性为true. 来源: https://my.oschina.net/u/3065626/blog/3107100

0.osframe框架启动入门说明

邮差的信 提交于 2019-11-29 19:39:06
开源项目名称: osframe管理系统 托管地址: http://git.oschina.net/haizicq/osframe 主要技术: spring mvc、spring、hibernate、angular js、seajs、bootstrap、shiro 框架介绍: 本框架是一个基础后台开发框架,基于springmvc+spring+hibernate搭建,前端采用angular js+sea js +bootstrap展现,基于shiro的权限管理和登陆控制。基础框架中包含了用户管理、权限管理等基础模块,提供了简单的首页门户,可以快速的实现新项目的搭建。 框架特色: 支持电脑和手机界面的自动智能切换。 技术交流群: 330710190(OSFrame技术交流群) 欢迎大家加入,共同探讨使用过程中的问题。 以下内容均是针对idea中操作 1、环境准备 jvm:jdk1.8及以上 包管理:maven 开发工具:idea 2、install模块 在idea中maven projects的根项目osframe,点击install,实现各模块的安装 也可以各模块独立的install,按依赖顺序逐个install,顺序如下:util、framework、users、auth、login、taglib 3、修改数据库配置 在web-view模块下 src/main/resources

武汉光迅科技Java笔试题

情到浓时终转凉″ 提交于 2019-11-29 17:16:28
1.Java中的override和overload的区别? override(重写):指子类继承父类,重写父类中的方法。 overload(重载):指用一个类中,方法名相同,传参个数不同、参数类型不同、传参顺序不同的方法,与方法返回类型无关。 2.什么是值传递什么是引用传递? 值传递 :传递的是存储单元中的内容,而非地址或者引用! 引用传递 :引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 Java中只有按值传递,没有按引用传递! 3.创建线程有几种方式?你喜欢哪一种,为什么? 创建线程有三种方法: 1.继承Thread类,重写run方法; 2.实现Runnable的方法; 3.使用ExecutorService、Callable、Future实现有返回结果的多线程; 但多数时间我们实现Runnable,因为java支持多实现,但不支持多继承。 4.ES是什么?简述他的优点。 ES(Elasticsearch)是一个基于Lucene的搜索服务器。 ES是分布式的不需要其他组件,分发是实时的; ES实时搜索非常快; ES处理多租户不需要特殊配置,学习成本较低; 5.简述你所知道的mysql的分库分表方案? 垂直拆分 垂直分表 也就是“大表拆小表”,基于列字段进行的。一般是表中的字段较多,将不常用的, 数据较大,长度较长

笔试题-武汉光迅科技Java

穿精又带淫゛_ 提交于 2019-11-29 17:03:15
1.Java中的override和overload的区别? override(重写):指子类继承父类,重写父类中的方法。 overload(重载):指用一个类中,方法名相同,传参个数不同、参数类型不同、传参顺序不同的方法,与方法返回类型无关。 2.什么是值传递什么是引用传递? 值传递 :传递的是存储单元中的内容,而非地址或者引用! 引用传递 :引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 Java中只有按值传递,没有按引用传递! 3.创建线程有几种方式?你喜欢哪一种,为什么? 创建线程有三种方法: 1.继承Thread类,重写run方法; 2.实现Runnable的方法; 3.使用ExecutorService、Callable、Future实现有返回结果的多线程; 但多数时间我们实现Runnable,因为java支持多实现,但不支持多继承。 4.ES是什么?简述他的优点。 ES(Elasticsearch)是一个基于Lucene的搜索服务器。 ES是分布式的不需要其他组件,分发是实时的; ES实时搜索非常快; ES处理多租户不需要特殊配置,学习成本较低; 5.简述你所知道的mysql的分库分表方案? 垂直拆分 垂直分表 也就是“大表拆小表”,基于列字段进行的。一般是表中的字段较多,将不常用的, 数据较大,长度较长

武汉光迅科技Java笔试题

谁说胖子不能爱 提交于 2019-11-29 16:59:48
1.Java中的override和overload的区别? override(重写):指子类继承父类,重写父类中的方法。 overload(重载):指用一个类中,方法名相同,传参个数不同、参数类型不同、传参顺序不同的方法,与方法返回类型无关。 2.什么是值传递什么是引用传递? 值传递 :传递的是存储单元中的内容,而非地址或者引用! 引用传递 :引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 Java中只有按值传递,没有按引用传递! 3.创建线程有几种方式?你喜欢哪一种,为什么? 创建线程有三种方法: 1.继承Thread类,重写run方法; 2.实现Runnable的方法; 3.使用ExecutorService、Callable、Future实现有返回结果的多线程; 但多数时间我们实现Runnable,因为java支持多实现,但不支持多继承。 4.ES是什么?简述他的优点。 ES(Elasticsearch)是一个基于Lucene的搜索服务器。 ES是分布式的不需要其他组件,分发是实时的; ES实时搜索非常快; ES处理多租户不需要特殊配置,学习成本较低; 5.简述你所知道的mysql的分库分表方案? 垂直拆分 垂直分表 也就是“大表拆小表”,基于列字段进行的。一般是表中的字段较多,将不常用的, 数据较大,长度较长

Jfinal engin 集成shiro标签支持

半世苍凉 提交于 2019-11-29 11:41:34
ShiroMethod /** * Copyright (c) 2011-2017, dafei 李飞 (myaniu AT gmail DOT com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations

java踩坑日记

天涯浪子 提交于 2019-11-29 09:40:12
1:环境:idea 14版本,win10,springboot 2:第一个问题:必须使用shiro实现登录(加验证码) 参考资料: https://blog.csdn.net/qq_34021712/article/details/80470738 © 王赛超 验证码校验: @RequestMapping(value = "/login",method = RequestMethod.POST) public String loginUser(HttpServletRequest request, String username, String password,boolean rememberMe,String captcha, Model model) { //校验验证码 //session中的验证码 String sessionCaptcha = (String) SecurityUtils.getSubject().getSession().getAttribute(CaptchaController.KEY_CAPTCHA); if (null == captcha || !captcha.equalsIgnoreCase(sessionCaptcha)) { model.addAttribute("msg","验证码错误!"); return "login"; } /