在第二篇文章讲了shiro与web项目集成,其中只要是与spring项目的集成。公司有些旧项目,是用servlet写的,并不适合用第二篇文章去搭建shiro。这里想讲讲shiro与普通的项目集成。与普通的web项目集成,shiro只需要两个依赖包,在项目的pom.xml下加入以下依赖:
1 | <dependency> |
在项目的web.xml加入shiro的listener
1 | <context-param> |
上面配置了shiro.ini文件在classpath的META-INF/shiro目录下。shiro.ini内容如下:
1 | # ======================= |
其中myRealm是自己写的realm,下面会给出代码,anyRoles,anyPerms为自定义的filter,上一篇文章已经讲过。
realm的代码如下,跟与spring项目集成的一样:
1 | /** |
到这里,shiro与普通的web项目集成已经完成。可以看到,shiro的非常易用的,无论是定制自己的realm,还是定义自己的filter,都可以体现shiro的易用性和灵活性。shiro对所有的功能都有一套默认的实现,比如说realm。用户可以完全不用自定义自己的reaml,shiro本身就提供了很多种realm的实现。在shiro-core-xx.jar的org.apache.shiro.realm包下,我们可以找到像JdbcRealm,JndiLdapRealm,IniRealm等等。shiro不仅易用和灵活,而且也可插拔。在很多地方,我们都可以用自己的实现在替换shiro的默认实现,当我们取消自己的实现时,shiro又会用默认的实现替上。在后面讲到shiro的集群和shiro共享时,我们就能深深感受到shiro的这种特性。