使用shiro实现登陆认证

shiro认证步骤:

1.收集Subject提交的身份和证明;

UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(),user.getPassword());

2.向Authenticating提交身份和证明;

Subject subject = SecurityUtils.getSubject();
subject.login(token);

3.捕获验证失败的异常信息

try{
	subject.login(token);
   }catch(UnknownAccountException e){
	...
   }catch(IncorrectCredentialsException e){
	...
  }

自定义一个实现登陆认证的xxxRealm继承自AuthorizingRealm:

protected AuthenticationInfo doGetAuthenticationInfo(
			AuthenticationToken token) throws AuthenticationException {
		System.out.println("认证===========================");
		//得到含有username和password的token
		UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken)token;
		User user = this.loginService.login(usernamePasswordToken.getUsername());
		if(user==null){
			return null;
		}else{
			SecurityUtils.getSubject().getSession().setAttribute("user", user);
			//把用户的信息封装到该对象中
			AuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(user,user.getPassword(),getName());
			return authenticationInfo;
		}
在spring的配置文件中:

<bean id="xxxRealm" class="com.xxx.xxx.util.xxxRealm"></bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
	<property name="realm">
		<ref bean="xxxRealm" />
	</property>
</bean>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值