在我们的新的保险项目中,我试图及其
我想检查用户名/密码对广告,
你很可能需要做一个定制的UserDetai
<beans:bean id="userDetailsService" class="com.app.MyUserDetailsServiceImpl" />
<authentication-manager>
<authentication-provider user-service-ref="userDetailsService">
<password-encoder hash="plaintext" />
</authentication-provider>
</authentication-manager>
在loadUserByUsername()中,您将创建一个UserDetails,设置用户名、密码和“权限”,即角色。
这篇博客文章有一个关于如何使用数据库的示例,您应该能够根据自己的需求进行调整。
现在实现这一点的最简单的方法(Spring Security 3.2.5.RELEASE)是通过实现一个自html" target="_blank">定义的< code > ldapaauthoritiespoulator ,它使用一个自定义的< code>JdbcDaoImpl从数据库中获取授权。
假设您使用默认的数据库模式,并且在LDAP中使用相同的用户名进行身份验证,并且在< code>authorities表中使用相同的外键,那么您只需要:
package demo;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl;
import org.springframework.ldap.core.DirContextOperations;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.ldap.userdetails.LdapAuthoritiesPopulator;
/*
* You need to extend JdbcDaoImpl to expose the protected method loadUserAuthorities.
*/
public class CustomJdbcUserDetailsService extends JdbcDaoImpl {
@Override
public List<GrantedAuthority> loadUserAuthorities(String username) {
return super.loadUserAuthorities(username);
}
}
/*
* Then, the only thing your populator needs to do is use the custom UserDetailsService above.
*/
public class CustomLdapAuthoritiesPopulator implements LdapAuthoritiesPopulator {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomLdapAuthoritiesPopulator.class);
private CustomJdbcUserDetailsService service;
public CustomLdapAuthoritiesPopulator(CustomJdbcUserDetailsService service) {
this.service = service;
}
public Collection<? extends GrantedAuthority> getGrantedAuthorities(DirContextOperations user, String username) {
return service.loadUserAuthorities(username);
}
}
现在剩下唯一配置LDAP身份验证
在<code>配置</code>的注释子类<code>全局方法安全配置</code>或<code>Web安全配置适配器</code>中,添加以下内容:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
/* other authentication configurations you might have */
/*
* This assumes that the dataSource configuring
* the connection to the database has been Autowired
* into this bean.
*
* Adapt according to your specific case.
*/
CustomJdbcUserDetailsService customJdbcUserDetailsService = new CustomJdbcUserDetailsService();
customJdbcUserDetailsService.setDataSource(dataSource);
CustomLdapAuthoritiesPopulator customLdapAuthoritiesPopulator = new CustomLdapAuthoritiesPopulator(customJdbcUserDetailsService);
auth.ldapAuthentication().ldapAuthoritiesPopulator(customLdapAuthoritiesPopulator)/* other LDAP configurations you might have */;
/* yet more authentication configurations you might have */
}
参考https://github.com/pfac/howto-spring-security的例子。
免责声明:我一直只使用Java配置,所以谨慎行事,可能会有一些错误。
与使用LDAP进行身份验证的其他配置不同,似乎没有漂亮的XML标记来定制< code > ldapaauthoritiespoulator 。所以,必须手动完成。假设已经定义了配置到LDAP服务器的连接的bean contextSource
,将以下内容添加到您的Spring XML配置中:
<beans:bean id="customJdbcUserDetailsService" class="demo.CustomJdbcUserDetailsService" />
<beans:bean id="customLdapAuthoritiesPopulator" class="demo.CustomLdapAuthoritiesPopulator">
<beans:constructor-arg ref="customJdbcUserDetailsService" />
</beans:bean>
<beans:bean id="ldapAuthProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
<beans:constructor-arg>
<beans:bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
<beans:constructor-arg ref="contextSource" />
<!--
other configurations you might need
-->
</beans:bean>
</beans:constructor-arg>
<beans:constructor-arg ref="customLdapAuthoritiesPopulator" />
</beans:bean>
<security:authentication-manager>
<security:authentication-provider ref="ldapAuthProvider" />
</security:authentication-manager>
来源:http://spapas . github . io/2013/10/14/spring-LDAP-custom-authorities/# spring-security-LDAP-with-custom-authorities
本文向大家介绍postgresql 创建角色和匹配的数据库,包括了postgresql 创建角色和匹配的数据库的使用技巧和注意事项,需要的朋友参考一下 示例 为了支持给定的应用程序,您通常会创建一个新角色并与之匹配。 要运行的shell命令如下: 假定pg_hba.conf已经正确配置,可能看起来像这样:
【注意】下列选项和选项卡会根据服务器版本而有所不同。 常规属性 角色名 定义数据库角色的名。 所有者 指定数据库角色的所有者。 成员属于 在列表里,指定此数据库角色成为已选择的数据库角色的成员。 成员 在列表里,指定已选择的数据库用户和角色成为此数据库角色的成员。 拥有的模式 在列表里,勾选数据库角色拥有的模式。 数据库权限 在网格中,勾选“权限”列出的数据库权限,勾选“授予”、“含授予选项”或“
【注意】下列选项和选项卡会根据服务器版本而有所不同。 常规属性 角色名 定义数据库角色的名。 所有者 指定数据库角色的所有者。 成员 在列表里,指定已选择的数据库用户和角色成为此数据库角色的成员。 成员属于 在列表里,指定此数据库角色成为已选择的数据库角色的成员。 拥有的模式 在列表里,勾选数据库角色拥有的模式。 数据库权限 在网格中,对照在“权限”列出的数据库权限,勾选“授予”、“授予选项”或“
【注意】下列选项和选项卡会根据服务器版本而有所不同。 常规属性 角色名 定义数据库角色的名。 所有者 指定数据库角色的所有者。 成员属于 在列表里,指定此数据库角色成为已选择的数据库角色的成员。 成员 在列表里,指定已选择的数据库用户和角色成为此数据库角色的成员。 拥有的模式 在列表里,勾选数据库角色拥有的模式。 数据库权限 在网格中,勾选“权限”列出的数据库权限,勾选“授予”、“含授予选项”或“
我需要一些帮助来理解如何将HTML与Angular一起使用。我这里有个目标。我想在下拉列表中显示汽车的。但是当您选择一辆时,变量应该是整个car对象。但是仍应仅显示。 这里有一个玩这个的地方:https://stackblitz.com/edit/angular-cwmwke
我不太确定如何使用actors访问数据库。在Akka的文档和书籍中,这个主题似乎被省略了。 一种解决方案可以是无状态参与者中的包装DAO。例如,对于数据库中的每个表(或域对象类型或聚合类型),可以创建一个负责所有CRUD操作的参与者。这种方法的一个变体可以是命令和查询的分离。例如,对于每个数据类型,1个命令参与者(用于并发)和10个查询参与者(用于并行性)。 另一种方法可以是创建只表示数据库中一行