快速业务通道

Spring源代码解析(九):Spring Acegi框架鉴权的实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
etrieveUser(username, (UsernamePasswordAuthenticationToken) authentication);        } catch (UsernameNotFoundException notFound) {          if (hideUserNotFoundExceptions) {            throw new BadCredentialsException(messages.getMessage (                "AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));          } else {            throw notFound;          }        }        Assert.notNull(user, "retrieveUser returned null - a violation of the interface contract");      }      if (!user.isAccountNonLocked()) {        throw new LockedException(messages.getMessage ("AbstractUserDetailsAuthenticationProvider.locked",            "User account is locked"));      }      if (!user.isEnabled()) {        throw new DisabledException(messages.getMessage ("AbstractUserDetailsAuthenticationProvider.disabled",            "User is disabled"));      }      if (!user.isAccountNonExpired()) {        throw new AccountExpiredException(messages.getMessage ("AbstractUserDetailsAuthenticationProvider.expired",            "User account has expired"));      }      // This check must come here, as we don''t want to tell users      // about account status unless they presented the correct credentials      try {//这里是验证过程,在retrieveUser中从数据库中得到用户的信息,在 additionalAuthenticationChecks中进行对比用户输入和服务器端的用户信息         //如果验证通过,那么构造一个Authentication对象来让以后的授权 使用,如果验证不通过,直接抛出异常结束鉴权过程        additionalAuthenticationChecks(user, (UsernamePasswordAuthenticationToken) authentication);      } catch (AuthenticationException exception) {        if (cacheWasUsed) {          // There was a problem, so try again after checking          // we''re using latest data (ie not from the cache)          cacheWasUsed = false;          user = retrieveUser(username, (UsernamePasswordAuthenticationToken) authentication);          additionalAuthenticationChecks(user, (UsernamePasswordAuthenticationToken) authentication);        } else {          throw exception;        }      }      if (!user.isCredentialsNonExpired()) {        throw new CredentialsExpiredException(messages.getMessage(            "AbstractUserDetailsAuthenticationProvider.credentialsExpired", "User credentials have expired"));      }      //根据前面的缓存结果决定是不是要把当前的用户信息存入缓存以供下次验 证使用      if (!cacheWasUsed) {        this.userCache.putUserInCache(user);      }      Object principalToReturn = user;      if (forcePrincipalAsString) {        principalToReturn = user.getUsername();      }   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号