質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

0回答

434閲覧

ログイン画面でエラーがでる

jampack

総合スコア10

Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2019/06/03 03:17

編集2022/01/12 10:55

題のとおりでDBに登録したユーザーでログインしようとしたらエラーがでます。原因がわかりません。
下のコードの

<p th:if="${param.error}"> Error! </p> の部分のエラーです。 パスワードはdemoで、INSERT文のパスワードは BCryptPasswordEncoder a =new BCryptPasswordEncoder(); String p = "demo"; String d = a.encode(p); System.out.println(d); を用いてハッシュ値を表示させコピペしたものです。 本Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発 ### コンソール画面 ```ここに言語を入力 select user0_.user_id as user_id1_3_0_, user0_.first_name as first_na2_3_0_, user0_.last_name as last_nam3_3_0_, user0_.password as password4_3_0_, user0_.role_name as role_nam5_3_0_ from usr user0_ where user0_.user_id=? 2019-06-03 13:47:38.956 TRACE 1692 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder  : binding parameter [1] as [VARCHAR] - [aaaa] 2019-06-03 13:47:38.972  WARN 1692 --- [nio-8080-exec-2] o.s.s.c.bcrypt.BCryptPasswordEncoder  : Empty encoded password 2019-06-03 13:47:40.383 DEBUG 1692 --- [nio-8080-exec-4] org.hibernate.SQL  : select ``` ### ReservationUserDetailsService ```java package mrs.domain.service.user;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import mrs.domain.model.User;
import mrs.domain.repository.user.UserRepository;

@Service
public class ReservationUserDetailsService implements UserDetailsService{
@Autowired
UserRepository userRepository;

@Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException{ User user = userRepository.findById(username).orElse(null); if(user == null) { throw new UsernameNotFoundException(username + "is not found"); } return new ReservationUserDetails(user); }

}

### data.sql(一部)とschema.sql(一部) ```ここに言語を入力 data.sql INSERT INTO usr (user_id,first_name,last_name,password,role_name) VALUES ('aaaa','Aaa','Aaa','$2a$10$F4zdLJMMxjJECgmAUpYUYezPVGbbSLdxz2HUcAquJNbiKDAzupF3i','USER'); schema.sql CREATE TABLE IF NOT EXISTS usr ( user_id VARCHAR(255) NOT NULL, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, role_name VARCHAR(255) NOT NULL, PRIMARY KEY (user_id) );

WebSecurityConfig

java

1@Configuration 2//Spring Securityのweb連携機能を有効にする 3@EnableWebSecurity 4public class WebSecurityConfig extends WebSecurityConfigurerAdapter{ 5 @Autowired 6 ReservationUserDetailsService userDetailsService; 7 @Bean 8 PasswordEncoder passwordEncoder() { 9 return new BCryptPasswordEncoder(); 10 } 11 @Override 12 protected void configure(HttpSecurity http)throws Exception{ 13 http.authorizeRequests() 14 .antMatchers("/js/**","/css/**").permitAll() 15 .antMatchers("/**").authenticated() 16 .and() 17 .formLogin() 18 .loginPage("/loginForm") 19 .loginProcessingUrl("/login") 20 .usernameParameter("username") 21 .passwordParameter("password") 22 .defaultSuccessUrl("/rooms",true) 23 .failureUrl("/loginForm?error=true").permitAll(); 24 } 25 @Override 26 protected void configure(AuthenticationManagerBuilder auth) throws Exception{ 27 auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder()); 28 } 29} 30

loginForm.html

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title></title> </head> <body> <h3>ログインフォーム</h3> <p th:if="${param.error}"> Error! </p> <form th:action="@{/login}" method="POST"> <table> <tr> <td><label for="username">User:</label></td> <td><input type="text" id="username" name="username" value="aaaa"/></td> </tr> <tr> <td><label for="password">Password:</label></td> <td><input type="password" id="password" name ="password" value="demo"/></td> <tr> <td>&nbsp;</td> <td><button type="submit">ログイン</button></td> </tr> </table> </form> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/03 10:26

paramsが未設定なのにその下にアクセスしてるからとかだと思うけど?
jampack

2019/06/03 11:11

paramsが未設定というのがよくわかりません。 param.errorのparamのことでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問