shiro整合开发-实现登陆和退出功能



1.登录

原理:

使用FormAuthenticationFilter过滤器实现,当被    /** = authc    拦截到,就会进入FormAuthenticationFilter过滤器,

用户没有认证时,请求loginurl进行认证,用户身份和用户密码提交数据到loginurl
FormAuthenticationFilter拦截住取出request中的username和password(两个参数名称是可以配置的)
FormAuthenticationFilter调用realm传入一个token(username和password)
realm认证时根据username查询用户信息

如果查询不到,realm返回nullFormAuthenticationFilter向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

可以删除原来的logoutcontroller方法代码。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值