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

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

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

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

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

Q&A

1回答

1929閲覧

Spring Securityでのログイン

sanezane

総合スコア91

Spring Security

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

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

0グッド

0クリップ

投稿2019/03/21 08:57

Spring Securityを使ってログインを実装しています。
ログイン画面を設定していますが、ログイン画面のみ以下のような画面になってしまいます。

イメージ説明

SecurityConfigは以下のようになっています。

SecurityCOnfig

1 2@Configuration 3@EnableWebSecurity 4public class SecurityConfig extends WebSecurityConfigurerAdapter { 5 6 @Autowired 7 DataSource dataSource; 8 9 @Autowired 10 UserDetailsService userDetailsService; 11 12 @Bean 13 public PasswordEncoder passwordEncoder() { 14 return new BCryptPasswordEncoder(); 15 } 16 17 18 /** 19 * 静的ファイルには認証をかけない 20 * @param web 21 * @throws Exception 22 */ 23 @Override 24 public void configure(WebSecurity web) throws Exception { 25 web.ignoring().antMatchers("/favicon.ico", "/css/**", "/js/**", "/images/**", "/fonts/**", "/shutdown" /* for Demo */); 26 } 27 28 /** 29 * UserDetailsServiceインターフェースを実装した独自の認証レルムを使用する設定 30 * @param auth 31 * @throws Exception 32 */ 33 @Override 34 protected void configure(AuthenticationManagerBuilder auth) throws Exception { 35 auth.userDetailsService(userDetailsService) 36 .passwordEncoder(passwordEncoder()); 37 } 38 39 @Override 40 protected void configure(HttpSecurity http) throws Exception { 41 http.authorizeRequests() 42 .antMatchers("/user/**").permitAll() 43 .antMatchers("/new").permitAll()//test用(ユーザ登録) 44 .antMatchers("/index").permitAll()//test用(ユーザ登録後の遷移画面) 45 .antMatchers("/user/create").permitAll()//test用機能 46 .anyRequest().authenticated(); 47 http.formLogin() 48 .loginPage("/loginFrom") 49 .loginProcessingUrl("/login") 50 .failureUrl("/login?error") 51 .successForwardUrl("/success") 52 .usernameParameter("email") 53 .passwordParameter("password"); 54 http.logout() 55 .logoutUrl("/logout**") 56 .logoutSuccessUrl("/login"); 57 } 58 59 60 @Bean 61 public AccessDeniedHandler accessDeniedHandler() { 62 return new DefaultAccessDeniedHandler(); 63 } 64 65 @Bean 66 public AuthenticationEntryPoint authenticationEntryPoint() { 67 return new DefaultAuthenticationEntryPoint("/loginFrom", LOGIN_TIMEOUT_URL); 68 } 69 70 71 72} 73

LoginController

1 2@Controller 3public class LoginController extends AbstractHtmlController { 4 5 6 @Override 7 public String getFunctionName() { 8 return "A_LOGIN"; 9 } 10 11 @ModelAttribute 12 LoginForm loginForm(){return new LoginForm();} 13 /** 14 * ログイン画面表示 15 * @return getメソッドの時はログイン画面を表示する 16 */ 17 @GetMapping("/loginForm") 18 public String loginFrom(){ 19 return "login/login"; 20 } 21 22...以下省略 23

templatesの下にlogin/login.htmlを作成しているためHTMLへのパスの指定もあっていると思います。

イメージ説明

###やってみたこと

authorizeRequestsにログインページのURLを追加してみましたが、同じ表示になります。

その他のURLのページには遷移できます。
ご意見をください。お願いします。

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

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

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

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

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

guest

回答1

0

以下のようにコントローラを変更したところ解決しました。原因はイマイチ掴めてませんので引き続きコメント募集します。
(1つ改行を入れただけです)

LoginController

1@GetMapping("/loginForm") 2 public String loginFrom(){ 3 4 return "login/login"; 5 } 6

投稿2019/03/21 12:52

sanezane

総合スコア91

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問