shiro

Shiro学习(一)之理论知识篇

試著忘記壹切 提交于 2019-12-04 19:09:22
一:Shiro简介 Apache Shiro 是 Java 的一个安全框架。功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案。 Authentication : 身份认证/登录,验证用户是不是拥有相应的身份; Authorization : 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager : 会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的; Cryptography : 加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Web Support : Web支持,可以非常容易的集成到Web环境; Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率; Concurrency : shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; Testing : 提供测试支持; Run As : 允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; Remember Me : 记住我

Shiro学习系列教程四:集成web(二)

99封情书 提交于 2019-12-04 19:09:10
本讲主要内容: 1:shiro对访问URL可使用通配符进行匹配 2:shiro标签的使用 3:shiro会话的机制 URL匹配方式: 演示: 现在shiro.ini配置的路径为: 直接访问/admin Ok.没问题。 那么我们访问/admin1呢? 就不行了。 修改shiro.ini配置文件。 重启后,再次访问/admin1就拦截登录页面。 Shiro标签的使用 演示: 在使用shiro标签的时候,需要在对应页面引入支持shiro标签的标签库:、 当用户有admin角色的时候在success.jsp页面显示【欢迎admin角色的用户登录!!】如果用户不是admin角色的时候显示【欢迎登陆】 在页面处理: 非admin角色(xiaotang=123456)登陆后: 在使用admin角色(kaigejava=123456)登陆后 演示二: 使用xiaotang=123456这个用户登录后: 显示用户身份信息的: 如下图: Shiro的会话机制 Shiro会话机制可以使用servlet的会话机制。 也可以使用shiro自己的会话机制。 ​ ps: 相关推荐: Shiro教程一Shiro之helloworld Shiro学习系列教程二:从数据库中获取认证信息 Shiro学习系列教程三:集成web 如果本文对您有帮助,在收藏同时烦请转发出去。谢谢! 关注【凯哥java】 欢迎关注凯哥公众号

对于RBAC与shiro的一些思考

随声附和 提交于 2019-12-04 18:21:36
一、什么是RBAC模型   RBAC模型是一个解决用户权限问题的设计思维。   在最简单的RBAC模型中,将用户表设计为如下几个表   1、用户   2、角色   3、权限   以及这三张表衍生出来的两张中间表   4、用户_角色表   5、权限_角色表   上面描述的5张表就构成了最基本也是最成熟的RBAC模型,可以看得出RBAC模型中的核心是角色,所有与用户相关的权限都是通过角色表进行关联的!在今后我们可能会用到的按钮元素表,样式表等各种各样的资源表最终都如权限表一般,与角色进行关联。RBAC的哲学就是,认角色不认用户,所有的查询都是通过角色来完成的。 1.1、RBAC模型的注意点   我们之所以要用到RBAC模型,本质上是为了实现两个功能:   1、资源对用户的可见性,例如:当前用户对应的角色是否能“看到“某个菜单项或是某个按钮,这一部分其实重在前端渲染,资源的可见性并不能保证资源安全,当有心人拿到资源的请求路径时依旧可以发出相应的请求。在我看来,对资源的可见性,更多的是对用户的体验上的优化。   2、对请求的鉴权,这部分才应该是我们关注的核心点。   需要注意的是,对于资源可见性的控制上,我们只要简单的将五张表进行关联查询,然后通过foreach渲染出用户可见的按钮即可,没有什么复杂的操作。无论是前后端分离的项目还是,传统项目或是各种模板引擎,都建议这样做

Spring MVC + Shiro + Junit Testing

风格不统一 提交于 2019-12-04 18:07:37
Hello I am working on Spring MVC application. Shiro is the security framework for my application. Now I want to write unit tests for my application. I am facing some issues with getting shiro's SecurityUtils class in my controllers while testing. I am pasting my code snippets below. I am re-using my bean definitions for both testing and development. import org.apache.shiro.SecurityUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.nsl.eds.domain.User; @Controller public class

开源文化,小谈

一世执手 提交于 2019-12-04 17:37:49
最近clone了一个开源项目 spring-shiro-training 。主要是一个shiro实现的权限系统,前端用了easyui。觉得挺适合公司现在需求的。不过在用的时候发现,发现在分页中返回数据有点问题,会导致分页失败。一开始没有头绪,不知道该怎么解决这个问题。后来加了qq群,问了一下,群主说改一下service就可以了。想了一下,我就知道改改哪里了。我算不算是为开源做贡献了。虽然我的项目是很简单的,当我相信,其他开源项目中也是在使用中不断发现bug,并且修复,提供给作者(组)。然后不断发展完善起来。这种不是闭门造车的文化,给别人便利的时候,能够提高自己(项目)。是一个正向的循环。 来源: oschina 链接: https://my.oschina.net/u/1585200/blog/768327

Springboot vue.js html 跨域 前后分离 shiro权限 集成代码生成器

折月煮酒 提交于 2019-12-04 17:27:32
本代码为 Springboot vue.js 前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架: springboot 2.1.2+ mybaits+maven+接口 前端页面:html +vue.js 形式 jquery ajax 异步跨域 json 格式数据交互 前后分离,前后台分开部署 (特别注意,前端用的vue.js, 就是html页面引入vue.js形式, 用tomcat部署运行,更适合后台开发者) 1.代码生成器: [正反双向](单表、主表、明细表、树形表,快速开发利器) freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面、建表sql脚本、处理类、service等完整模块 2.多数据源: (支持同时连接无数个数据库,可以不同的模块连接不同数的据库)支持N个数据源 3. 阿里数据库连接池 druid ,安全权限框架 shiro( 菜单权限和按钮权限 ) , 缓存框架 ehcache 4. 代码编辑器, 在线模版编辑,仿开发工具编辑器 5.调用摄像头拍照 自定义裁剪编辑头像,头像图片色度调节 6.websocket 及时站内信并声音提醒、实时在线管理、websocket及时刷新页面(完胜ajax技术) 更新即时通讯功能,支持好友,群组,发图片、文件,消息声音提醒,离线消息,保留聊天记录 ---------------------------

集合操作异常ConcurrentModificationException处理

…衆ロ難τιáo~ 提交于 2019-12-04 16:53:49
报错信息java.util.ConcurrentModificationException: null java.util.ConcurrentModificationException: null at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList$Itr.next(ArrayList.java:859) at com.bjbde.admin.system.controller.PcmCheckController.tree(PcmCheckController.java:211) at com.bjbde.admin.system.controller.PcmCheckController$$FastClassBySpringCGLIB$$c2a5577c.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy

Shiro grails plugin - config

醉酒当歌 提交于 2019-12-04 16:47:39
setting up shiro session cache with ehcache+terracotta ,putitng these configs in config.groovy - security.shiro.sessionDAO = "org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO" // This name matches a cache name in ehcache.xml: security.shiro.sessionDAO.activeSessionsCacheName = "shiro-activeSessionsCache" security.shiro.securityManager.sessionManager.sessionDAO = "org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO" // Configure The EhCacheManager: security.shiro.cacheManager = "org.apache.shiro.cache.ehcache.EhCacheManager" security.shiro.cacheManager.cacheManagerConfigFile =

shiro with jdbc and hashed passwords

非 Y 不嫁゛ 提交于 2019-12-04 15:44:18
Here is my shiro config [main] authc.loginUrl = /site/index.jsp authc.usernameParam = user authc.passwordParam = pass authc.rememberMeParam = remember authc.successUrl = /site/home.jsp jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm jdbcRealm.permissionsLookupEnabled=true jdbcRealm.authenticationQuery = select password from users where username = ? jdbcRealm.userRolesQuery = select role from users where username = ? credentialsMatcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher credentialsMatcher.hashAlgorithmName = SHA-256 credentialsMatcher.storedCredentialsHexEncoded = true

Shiro doesn't redirect to unauthorizedUrl w/invalid login - Shiro with Spring and Tiles

百般思念 提交于 2019-12-04 15:13:18
I'm using Spring MVC, Tiles and Shiro. This is how my unauthorizedUrl property is configured: <property name="unauthorizedUrl" value="/unauthorized"/> My expectation is that when MyAuthorizingRealm finds invalid credentials, that Shiro will redirect to /unauthorized . But, that doesn't happen for me on form submission. I have a login @Controller that is mapped to handle GET and POST actions for /login . For accesses to the url /lists the login form is displayed. So it seems to work in one case but not the other. @Controller @RequestMapping(value = "/login") public class LoginController {