[ad_1]
I have standart formlogin and it works, my app saves user data into db in register page and checks data and authenticate user in login page. But when I use docker I get “Bad credentials” error in login page even if I wrote proper login and password. Here’s my code:
application.properties:
spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=41Zuteho!
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database=postgresql
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect
spring.main.allow-circular-references=true
management.endpoints.web.exposure.include=*
management.trace.http.include=RESPONSE_HEADERS, PRINCIPAL
docker-compose:
version: '3.4'
services:
app:
image: app
build:
context: .
dockerfile: ./Dockerfile
ports:
- 8080:8080
container_name: app
depends_on:
- db
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/postgres
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=41Zuteho!
- SPRING_JPA_HIBERNATE_DDL_AUTO=create
- spring.datasource.driver-class-name=org.postgresql.Driver
- spring.jpa.database=postgresql
- spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect
db:
image: 'postgres:13.1-alpine'
container_name: db
volumes:
- sample_db:/var/lib/postgresql/data
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=41Zuteho!
- POSTGRES_DB=postgres
- PGDATA=/var/lib/postgresql/data/pgdata
ports:
- 5432:5432
volumes:
sample_db: {}
controller:
@GetMapping("/register")
public String showRegistrationForm(Model model) {
model.addAttribute("user", new User());
return "signup";
}
@PostMapping("/process_register")
public String processRegister(User user) {
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode(user.getPassword());
user.setPassword(encodedPassword);
userRepository.save(user);
return "register_success";
}
template:
<form th:action="@{/process_register}" th:object="${user}"
method="post" style="max-width: 600px; margin: 0 auto;">
<div class="m-3">
<div class="form-group row">
<label class="col-4 col-form-label">E-mail: </label>
<div class="col-8">
<input type="email" th:field="*{email}" class="form-control" required />
</div>
</div>
<div class="form-group row">
<label class="col-4 col-form-label">Password: </label>
<div class="col-8">
<input type="password" th:field="*{password}" class="form-control"
required minlength="6" maxlength="10"/>
</div>
</div>
<div>
<button type="submit" class="btn btn-primary">Sign Up</button>
</div>
</div>
</form>
User:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(nullable = false, unique = true, length = 45)
private String email;
@Column(nullable = false, length = 64)
private String password;
User() {}
public User(Long id, String email, String password) {
this.id = id;
this.email = email;
this.password = password;
}
[ad_2]