当前位置: 首页 > 知识库问答 >
问题:

Spring Security:带有数据源的Java配置

公良文彬
2023-03-14

pom.xml已更新:

spring.version=3.2.4.发布spring.security.version=3.1.4.发布

...
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-javaconfig</artifactId>
            <version>1.0.0.M1</version>
        </dependency>
...
        <repository>
            <id>repository.springsource.milestone</id>
            <name>SpringSource Milestone Repository</name>
            <url>http://repo.springsource.org/milestone</url>
        </repository>

然后我添加了一个新的java配置类,而不是spring-security.xml

package com.sprsec.init;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

import com.sprsec.service.CustomUserDetailsService;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private DataSource dataSource;

    @Override
    protected void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth.jdbcAuthentication().dataSource(dataSource);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.userDetailsService(new CustomUserDetailsService())
            .authorizeUrls()
            .antMatchers("/sec/moderation.html").hasRole("MODERATOR")
            .antMatchers("/admin/**").hasRole("ADMIN")
            .and()
            .formLogin()
            .loginPage("/user-login.html")
            .defaultSuccessUrl("/success-login.html")
            .failureUrl("/error-login.html")
            .permitAll()
            .and()
            .logout()
            .logoutSuccessUrl("/index.html");
    }

}
package com.sprsec.init;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class Initializer extends
        AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { WebAppConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebAppConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}
    null

有人能给出一个建议吗?

共有1个答案

卜弘文
2023-03-14

您可能遇到了依赖关系冲突。运行Maven dependency:tree,找出使用了哪些依赖项,并查找相互冲突的依赖项。此外,使用maven-enforcer-plugin可能会有所帮助。

查看示例项目,您使用的是Spring3.1.3,对于Spring Security也是如此,您希望为Spring和Spring Security提供分离的属性。

<properties>
  <hibernate.version>4.1.7.Final</hibernate.version>
  <mysql.connector.version>5.1.21</mysql.connector.version>
  <slf4j.version>1.6.6</slf4j.version>
  <spring.version>3.2.4.RELEASE</spring.version>
  <spring.security.version>3.1.4.RELEASE<spring.security.version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

至于Spring Security性,您可能希望尝试新的3.2.0.rc1,因为它已经包含了新的Spring Security性javaconfig,并提供了改进和一些方便的超类。

 类似资料:
  • 我正在尝试在Heroku上部署我的Quarkus-app。它工作正常,但我需要使用固定值指定数据源参数。因为Heroku可能会旋转此参数,所以这不是一个真正的好主意。 在Quarkus中,我需要应用程序中的这3个参数。属性: Heroku只给了我1个环境变量(

  • 根据反馈更新问题: 我有一个spring-boot应用程序,它有三个数据库:H2用于集成测试,Postgresql用于qa和Production。由于spring-boot为您创建了默认的数据源,所以我没有为集成测试定义任何内容。我想我应该使用Application.Properties来定义我的数据源连接值,但我不确定处理这个问题的最佳方法是什么。 我还没有弄清楚如何在IntelliJ中设置默认

  • 我使用jasper设计器(不是iReport而是eclipse的插件)创建了一个使用excel文件作为数据源的报表。 该报表在设计器中运行良好,并且从文件中读取数据没有问题,但是在将该文件编译为并在JasperViewer中给出excel文件的路径后,jasperViewer中没有任何内容! 这是我的代码:

  • 我有一个简单的Spring引导应用程序与2个外部罐子。每个jar都使用Spring JPA,并且完全配置为独立工作。 JAR1 这是我的Spring Boot应用程序的启动类 服务器启动时没有任何问题,但在配置jpa内容时存在一些问题。持久性单元ais的配置应使用Oracle方言和驱动程序。看来它拿起了JAR1的配置。 下一个问题是数据库访问。Spring不知道应该使用哪个事务管理器

  • 我在Spring Boot中有两个MySQL数据源,因此我有两个配置类。但它似乎只使用主数据源。所有实体都是为主数据源创建的,因此crawlerdb和userdb实体都是在userdb中创建的。 我的userdb主配置: 我的辅助爬网数据库配置: 两个架构的实体类位于不同的包中,如类名上方的EntityScan所示。但当我检查MySQL workbench中创建的模式时,我看到所有实体都是在use

  • 配置项说明 schemaName: # 逻辑数据源名称 dataSources: # 数据源配置,可配置多个 <data-source-name> <data-source-name>: # 与 ShardingSphere-JDBC 配置不同,无需配置数据库连接池 url: #数据库 URL 连接 username: # 数据库用户名 password: # 数据库