如何动态更改连接登录名和密码?

时间:2016-11-18 07:56:52

标签: spring spring-mvc spring-4

在配置类中,我设置了连接特性:

@Configuration
@ComponentScan("com.ambre.pta")
@EnableTransactionManagement
@PropertySources({
    @PropertySource("classpath:fr/global.properties"),
    @PropertySource("classpath:fr/main.properties"),
    @PropertySource("classpath:fr/admin.properties")
})
public class ApplicationContextConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean(name = "viewResolver")
    public InternalResourceViewResolver getViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    @Bean(name = "dataSource")
    public DataSource getDataSource() { // here is the connexion configuration
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
        dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
        dataSource.setUsername("pta");
        dataSource.setPassword("pta");

        return dataSource;
    }

    @Autowired
    @Bean(name = "sessionFactory")
    public SessionFactory getSessionFactory(DataSource dataSource) {

        LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);

        sessionBuilder.scanPackages("com.ambre.pta.model");

        return sessionBuilder.buildSessionFactory();

    }

    @Autowired
    @Bean(name = "transactionManager")
    public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {

        HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);

        return transactionManager;
    }

    @Autowired
    @Bean(name = "utilisateurDao")
    public UtilisateurDAO getUtilisateurDao(SessionFactory sessionFactory) {
        return new UtilisateurDAOImpl(sessionFactory);
    }

    @Autowired
    @Bean(name = "menuDao")
    public MenuDAO getMenuDao(SessionFactory sessionFactory) {
        return new MenuDAOImpl(sessionFactory);
    }

}

在我们的项目中,跟踪应用程序上的用户活动非常重要。因此,我们需要连接的用户在执行操作时在数据库中进行跟踪,例如单击菜单(调用控制器的操作)或提交表单等等...这就是为什么我们需要动态设置连接登录,因为如果它被硬编码为“pta”,那么对于每个使用该应用程序的用户来说,对于使用该应用程序的每个用户,它都会在数据库日志中写成“pta”。

我们已经创建了一个创建用户的屏幕;创建用户时,它也会在数据库(Oracle)中创建:create user xxx identified by pwd。然后我们创建了一个屏幕,为创建的用户提供角色。

因此,当用户连接到应用程序时,我们需要与此用户建立数据库连接,但不是硬编码用户,这对所有用户保持不变。怎么做?

0 个答案:

没有答案