为美好而努力——羊羽科技说。

最近在开发自己的网站,需要权限控制功能,在网上找了一下,找到了我接下来要介绍的shiro框架。
shiro框架是Apache公司维护的开源产品之一,其官网对其的简介是这样的:

shiro官网简介
翻译过来就是:
shiro是一个功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理。通过Shiro易于理解的API,您可以快速、轻松地保护任何应用程序——从最小的移动应用程序到最大的web和企业应用程序。
这正好嵌合我的需求:网站的某些按钮和页面需要在用户登录之后才能进行点击和查看。
接下来,我将结合实际代码来讲述shiro怎样和spring、springmvc、mybatis(SSM)三大框架进行融合。

开发准备
开发工具:Intellij IDEA
项目管理工具:maven
使用框架:spring、springmvc、mybatis、shiro
前端展示页面:JSP
整合步骤 + 代码示例
1,在pom.xml配置依赖;

shiro依赖
需要的可以去maven仓库里面找,也可以找我要(私信我)。
2,web.xml中配置shiro过滤器;

web.xml配置过滤器
3,创建application-shiro.xml文件,放在resources文件夹下;

4,application-shiro.xml中新增配置代码;

关键配置代码
5,创建realm类,继承AuthorizingRealm类;

6,在创建的realm类中,复写父类两个方法doGetAuthenticationInfo和doGetAuthorizationInfo;

7,创建Filter类,继承FormAuthenticationFilter类

8,在创建的Filter类中,复写父类的两个方法onLoginSuccess和onLoginFailure;

9,在onLoginSuccess方法中添加如下代码;

10,在onLoginFailure方法中添加如下代码;

11,在webapp下新建login.jsp页面,页面关键代码如下;

12,新建控制类Controller,类中requestMapping中的值与shiro配置文件中的loginUrl值一样;

13,新建控制类Contorller,类中requestMapping中的值与shiro配置文件中的redirectUrl值一样;

14,到此shiro整合ssm就完成了,并且还实现了登录认证与页面跳转。
写在最后
这个算是我学习过程的一个记录,写的不是很完善,如果你看的不是很清晰,想要源码的话可以私信我发送“shiro”关键词即可获取,也欢迎你的评论,期待和你的交流。