快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ernameQuery() {      return authoritiesByUsernameQuery;    }    public String getRolePrefix() {      return rolePrefix;    }    public String getUsersByUsernameQuery() {      return usersByUsernameQuery;    }    protected void initDao() throws ApplicationContextException {      initMappingSqlQueries();    }    /**    * Extension point to allow other MappingSqlQuery objects to be substituted in a subclass    */    protected void initMappingSqlQueries() {      this.usersByUsernameMapping = new UsersByUsernameMapping (getDataSource());      this.authoritiesByUsernameMapping = new AuthoritiesByUsernameMapping(getDataSource());    }    public boolean isUsernameBasedPrimaryKey() {      return usernameBasedPrimaryKey;    }    //这里是取得数据库用户信息的具体过程    public UserDetails loadUserByUsername(String username)      throws UsernameNotFoundException, DataAccessException {      //根据用户名在用户表中得到用户信息,包括用户名,密码和用户是否有效 的信息      List users = usersByUsernameMapping.execute(username);      if (users.size() == 0) {        throw new UsernameNotFoundException("User not found");      }      //取集合中的第一个作为有效的用户对象      UserDetails user = (UserDetails) users.get(0); // contains no GrantedAuthority[]      //这里在权限表中去取得用户的权限信息,同样的返回一个权限集合对应于 这个用户      List dbAuths = authoritiesByUsernameMapping.execute (user.getUsername());      addCustomAuthorities(user.getUsername(), dbAuths);      if (dbAuths.size() == 0) {        throw new UsernameNotFoundException("User has no GrantedAuthority");      }      //这里根据得到的权限集合来配置返回的User对象供以后使用      GrantedAuthority[] arrayAuths = (GrantedAuthority[]) dbAuths.toArray(new GrantedAuthority[dbAuths.size()]);      String returnUsername = user.getUsername();      if (!usernameBasedPrimaryKey) {        returnUsername = username;      }      return new User(returnUsername, user.getPassword(), user.isEnabled (), true, true, true, arrayAuths);    }    public void setAuthoritiesByUsernameQuery(String queryString) {      authoritiesByUsernameQuery = queryString;    }    public void setRolePrefix(String rolePrefix) {      this.rolePrefix = rolePrefix;    }    public void setUsernameBasedPrimaryKey(boolean usernameBasedPrimaryKey) {      this.usernameBasedPrimaryKey = usernameBasedPrimaryKey;    }    public void setUsersByUsernameQuery(String usersByUsernameQueryString) {      this.usersByUsernameQuery = usersByUsernameQueryString;    }    //~ Inner Classes ============================================================================== ====================    /**    * 这里是调用Spring JDBC的数据库操作,具体可以参考对JDBC的分析,这个类的 作用是把数据库查询得到的记录集合转换为对象集合 - 一个很简单的O/R实现    */    protected class A

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号