shiro整合开发-实现登陆和退出功能
1.登录
原理:
使用FormAuthenticationFilter过滤器实现,当被 /** = authc 拦截到,就会进入FormAuthenticationFilter过滤器,
用户没有认证时,请求loginurl进行认证,用户身份和用户密码提交数据到loginurl
FormAuthenticationFilter拦截住取出request中的username和password(两个参数名称是可以配置的)
FormAuthenticationFilter调用realm传入一个token(username和password)
realm认证时根据username查询用户信息
如果查询不到,realm返回null,FormAuthenticationFilter向request域中填充一个参数(记录了异常信息)
如果查询到了,返回token(包括username和password)进行比对,比对成功认证通过,shiro会默认跳转到上一个页面
注意:
修改页面的账号和密码的input的name属性为username和password,
因为FormAuthenticationFilter的用户身份和密码的input的默认值(username和password)代码的实现
认证拦截过虑器的编写
在applicationContext-shiro.xml中配置
<!-- /** = authc--所有没有通过认证的资源被拦截下来 拦截到的资源会传到FormAuthenticationFilter这个过滤器中 使用FormAuthenticationFilter过虑器实现 登录: 当用户没有认证时,请求login的url进行认证, 用户身份和用户密码提交数据到loginurl(上面已经指定了该url), FormAuthenticationFilter拦截住取出request中的username和password(两个参数名称是可以配置的) FormAuthenticationFilter调用realm传入一个token(username和password) realm认证时根据username查询用户信息(包括 userid、usercode、username、menus)。 如果查询不到,realm返回null,FormAuthenticationFilter向request域中填充一个参数(记录了异常信息) 如果认证通过,shiro会默认跳转到上一个页面 --> /** = authc
2.退出
使用LogoutFilter
不用我们去实现退出,只要去访问一个退出的url(该 url是可以不存在),由LogoutFilter拦截住,清除session。
在applicationContext-shiro.xml配置LogoutFilter:
<!-- 请求logout.action地址,shiro执行清除session操作 --> /logout.action = logout
可以删除原来的logout的controller方法代码。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: windows10 训练word2vec 中文语料
- 下一篇: Shiro源码研究之登录与登出