SpringSecurityでログインできない

実現したいこと

SpringSecurityを使用して自作のログイン画面の認証をしたい

発生している問題・分からないこと

エラーは発生していないが、画面遷移せずに自画面に戻る

エラーメッセージ

error

1エラーメッセージなし

該当のソースコード

HTML

1<!DOCTYPE html> 2<html lang="en" xmlns:th="http://www.thymeleaf.org"> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>管理App</title> 7</head> 8 9<body> 10 <div></div> 11 <h2>ログイン</h2> 12 13 <span th:text="${errMsg}"></span> 14 15 <form th:action="@{/login}" th:method="post" th:object="${loginForm}"> 16 17 <div> 18 <p><label>ユーザー名:</label> 19 <input type="text" th:field="*{user_name}"> 20 <p><label>パスワード:</label> 21 <input type="password" th:field="*{password}"> 22 <p><button type="submit">ログイン</button> 23 </div> 24 25 </form> 26 </div> 27</body> 28 29</html>

Java

1package com.example.demo.app.controller;2 3import org.springframework.context.MessageSource;4import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;5import org.springframework.security.crypto.password.PasswordEncoder;6import org.springframework.stereotype.Controller;7import org.springframework.ui.Model;8import org.springframework.web.bind.annotation.GetMapping;9import org.springframework.web.bind.annotation.PostMapping;10 11import com.example.demo.app.form.LoginForm;12import com.example.demo.app.message.MessageConst;13import com.example.demo.app.message.MsgUtil;14import com.example.demo.app.service.LoginService;15 16import lombok.RequiredArgsConstructor;17 18@Controller19@RequiredArgsConstructor20public class LoginController {21 22 23 private final LoginService service ;24 25 26 private final PasswordEncoder passwordencoder = new BCryptPasswordEncoder();27 28 29 private final MessageSource messageSource;30 31 @GetMapping("/")32 public String showLogin(Model model, LoginForm form) {33 return "login";34 }35 36 @PostMapping("/login")37 public String login(Model model, LoginForm form) {38 39 var userInfo = service.searchUserById(form.getUser_name());40 41 var loginCheck = userInfo.isPresent() && passwordencoder.matches(form.getPassword(),userInfo.get().getPassword());42 43 if (loginCheck) {44 return "redirect:/index";45 } else {46 var errMsg = MsgUtil.getMessage(messageSource,MessageConst.LOGIN_WRONG_INPUT);47 model.addAttribute("errMsg", errMsg);48 return "login";49 }50 }51}52

Java

1package com.example.demo.app.controller;2 3import org.springframework.stereotype.Controller;4import org.springframework.web.bind.annotation.GetMapping;5 6import lombok.RequiredArgsConstructor;7 8//コントローラーアノテーションでクラス自体に効果付与9@Controller10@RequiredArgsConstructor11public class IndexController {12 13 15 16 @GetMapping("/index")17 public String index() {18 return "index.html";19 }20}21

pom.xml

1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-security</artifactId> 4 </dependency>

試したこと・調べたこと

上記の詳細・結果

ログインにはSpringSecurityの「user」と自動生成されるパスワードを使ってログインしています。

補足

特になし

コメントを投稿

0 コメント