使用Tomcat启动Spring Boot时的用户名和密码是什么?

时间:2016-05-17 19:46:02

标签: java spring spring-mvc tomcat spring-boot

当我通过Spring Boot部署Spring应用程序并访问imageviewkapak.setOnClickListener(new View.OnClickListener(){ public void onClick (View v){ if (imageviewkapak.getDrawable() != null) { blurredImageView.setImageBitmap(blurBitMapImage(this,karsicover, 20)); Log.i("tago", "bos atma"); } } } 时,我必须进行身份验证,但是用户名和密码是什么,或者我该如何设置它?我尝试将其添加到我的localhost:8080文件中,但它不起作用:

tomcat-users

这是申请的起点:

<role rolename="manager-gui"/>
    <user username="admin" password="admin" roles="manager-gui"/>

这是Tomcat的依赖:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

如何在<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> 上进行身份验证?

8 个答案:

答案 0 :(得分:194)

我认为您的类路径上有Spring Security,然后Spring安全性会自动配置为默认用户并生成密码

请查看您的pom.xml文件:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

如果你的pom中有这个,那么你应该有这样的日志控制台消息:

Using default security password: ce6c3d39-8f20-4a41-8e01-803166bb99b6

在浏览器提示中,您将导入用户user以及在控制台中打印的密码。

或者,如果您想配置弹簧安全性,可以查看Spring Boot secured example

Security部分的Spring Boot 参考文档中对此进行了解释,它表明:

The default AuthenticationManager has a single user (‘user’ username and random password, printed at `INFO` level when the application starts up)

Using default security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35

答案 1 :(得分:30)

如果在类路径中添加spring-security个jar,并且如果它是spring-boot应用程序,则默认安全配置类SecurityAutoConfiguration

将保护所有http端点

这会导致浏览器弹出窗口要求提供凭据。

每个应用程序的密码更改都会重新启动,可以在控制台中找到。

Using default security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35

在默认值前面添加您自己的应用程序安全层,

@EnableWebSecurity
public class SecurityConfig {

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()
                .withUser("user").password("password").roles("USER");
    }
}

或者如果您只想更改密码,可以使用

覆盖默认值

<强> application.xml中

security.user.password = NEW_PASSWORD

<强> application.properties

spring.security.user.name=<>
spring.security.user.password=<>

答案 2 :(得分:1)

已接受答案的补充-

如果在日志中看不到密码,请启用“ org.springframework.boot.autoconfigure.security”日志。

  

如果您微调日志记录配置,请确保   org.springframework.boot.autoconfigure.security类别设置为log   INFO消息,否则将不显示默认密码。

https://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/#boot-features-security

答案 3 :(得分:1)

首先,只需将以下内容添加到您的 application.properties 文件中

spring.security.user.name=user
spring.security.user.password=pass

注意:没有双引号

运行您的应用程序并输入凭据(用户、密码)

答案 4 :(得分:0)

如果您无法根据指向默认答案的其他答案找到密码,则最近版本中的日志消息措辞更改为

Using generated security password: <some UUID>

答案 5 :(得分:0)

覆盖时

spring.security.user.name=
spring.security.user.password=

application.properties 中,您不需要"周围的"username",只需使用username。还有一点,而不是存储原始密码,而是使用 bcrypt / scrypt 对其进行加密,然后像

那样存储
spring.security.user.password={bcrypt}encryptedPassword

答案 6 :(得分:0)

当我开始学习Spring Security时,我重写了方法 userDetailsS​​ervice(),如下面的代码片段所示:

@Configuration
@EnableWebSecurity
public class ApplicationSecurityConfiguration extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/", "/index").permitAll()
                .anyRequest().authenticated()
                .and()
                .httpBasic();
    }

    @Override
    @Bean
    public UserDetailsService userDetailsService() {
        List<UserDetails> users= new ArrayList<UserDetails>();
        users.add(User.withDefaultPasswordEncoder().username("admin").password("nimda").roles("USER","ADMIN").build());
        users.add(User.withDefaultPasswordEncoder().username("Spring").password("Security").roles("USER").build());
        return new InMemoryUserDetailsManager(users);
    }
}

因此,我们可以使用上述凭据登录到应用程序。 (例如admin / nimda)

注意:我们不应该在生产中使用此功能。

答案 7 :(得分:0)

尝试从您的项目中的以下代码片段中获取用户名和密码,然后登录,并希望此方法有效。

@Override
    @Bean
    public UserDetailsService userDetailsService() {
        List<UserDetails> users= new ArrayList<UserDetails>();
        users.add(User.withDefaultPasswordEncoder().username("admin").password("admin").roles("USER","ADMIN").build());
        users.add(User.withDefaultPasswordEncoder().username("spring").password("spring").roles("USER").build());
        return new UserDetailsManager(users);
    }