原文:http://zhangxiao.org/2016/jfinal-shiro-integration1/Apache Shiro是Java的一个安全框架,也是我第一个使用的Java安全框架。在我的入门级开源项目JFinal-Paladin中,我进行了一些实践,总体感觉还是非常棒的,该考虑到的都感觉已经考虑到。对比之前所接触过的php框架里面安全模块,感觉只有过之而无不及。个人体验而已,有意见的朋友请喷?。
本文主要来讲述下在JFianl中集成Shiro过程中的经验和想法。
入门必看
英文好的可以直接看官网教程,英文不好的可以看下开涛的博客《跟我学Shiro》系列
在看教程之前,最好了解想一些shiro的概念:Apache Shiro Terminology
自己入门时踩的坑
一开始的时候,我自己搞了一个JFinal的全局Interceptor
,用来做Shiro
的权限判断。原因是一开始不了解Shiro,不知道运用Shiro
的Filter
,理所当然地从JFinal
的层面进行思考。
当然,在JFinal
的Interceptor
中也是可以做一些权限的判断的,不过顺序上面先要经过Shiro
的Filter
,然后才会到JFinal
的Filter
,真正进入JFinal
。
现成方案
可以直接拿来用,可以做参考,我在实践的时候,也参考了不少
JFinalShiroPlugin
项目地址:http://git.oschina.net/myaniu...
JFinal_Authority
项目地址:http://git.oschina.net/jayqqa...
Dreampie/jfinal-shiro
项目地址:https://github.com/Dreampie/j...
现成方案之个人感受
部分现成方案中使用了Plugin、Interceptor、Annotation的方式来集成Shrio,个人不是非常喜欢,个人感觉有2个痛点:
1、需要好多代码去实现Plugin、Interceptor、Annotation,虽然别人写好了,但是你还是得去了解源码,万一有个坑呢:),毕竟不是什么大而成熟且运用广泛的解决方案
2、你项目里有这么多代码,想想一下
- 某一天你想知道哪个Controller或Action里面加了Shiro鉴权,哪些没有加
- 某一天你想知道各个加了Shrio鉴权的Controller或Action所对应的权限表达式是什么
- 某一天你想知道加一个权限判断,或去掉一个
你得去找,去改,重新编译,重新部署。不管你疯不疯,反正我感觉我会疯的。
我的选择
既然Shiro是专业的那就让它做好该做的。
- 在shiro.ini里面,配置
自定义Realm
+自定义filters
+url表达式
,来实现自定义的验证方式 - 用web来配置:资源、角色、用户、权限
待续...
下一篇中我将会整理具体的实现步骤:《JFianl整合Shiro(二)》
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。