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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Spring源代码解析(九):Spring Acegi框架鉴权的实现 - 编程入门网的所有评论