カスタムページのみを保護するため、または@PreAuthorized
注釈で作業するために、Springセキュリティ(Java設定を使用)を設定する方法はありますか?スプリングセキュリティのセキュリティ保護されたカスタムページ
私は/admin
などのカスタムコールをセキュリティで保護したいと考えています(セキュリティ設定のすべてのコールをハードコーディングせずに)。これはコントローラに上記のアノテーションで設定されていますが、まったく認証。
カスタムページのみを保護するため、または@PreAuthorized
注釈で作業するために、Springセキュリティ(Java設定を使用)を設定する方法はありますか?スプリングセキュリティのセキュリティ保護されたカスタムページ
私は/admin
などのカスタムコールをセキュリティで保護したいと考えています(セキュリティ設定のすべてのコールをハードコーディングせずに)。これはコントローラに上記のアノテーションで設定されていますが、まったく認証。
私にとってはうまくいくものを見つけるのに苦労しました。それはトリックを行い、また非常に読みやすいです。
package com.your.package.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.*;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.authorizeRequests()
.antMatchers("/admin/**").access("hasRole('ADMIN')")
.antMatchers("/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception
{
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
}
}
同じページにまだない人のための
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.authorizeRequests()
.antMatchers("/admin/**").access("hasRole('ADMIN')")
.antMatchers("/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin();
}
とフルクラスformLogin()
メソッドを呼び出していないノートはデフォルトの「/ログインは」404エラーを返すになるだろう。
私はこれがあなたの質問に答えるかどうかわからないですが、あなたがそうのように、特定のページを識別し、セキュリティの設定で他の人を無視するアリマッチャーを使用することができます。
.antMatchers("/**").permitAll()
または
.antMatcher("/admin/**")
.authorizeRequests()
.anyRequest().authenticated()
http://stackoverflow.com/questions/35633194/spring-security-configuration-for-basic-authentication-and-form-login/35634692#35634692ここでは2つの作業例を見つけることができますが、おそらくそれが役に立ちます。 – Andrei
返事をありがとう。 2番目のバージョンは必要なものになっていますが、これはハードコード( "/ admin/**")のほうがはるかです。 終了結果はシステムの「反対側」から出てきました。コントローラーの定義には @PreAuthorize( "hasRole( 'ROLE_ANONYMOUS')") が追加されました。私は余分なセキュリティが必要なものから。 –
Javaの設定クラスでハードコードされた値を完全に削除したい場合は、ADMIN_PATH = "/ admin /"のような定数を持つ抽象クラスを定義し、コントローラとセキュリティ設定の両方で使用するか、プロパティー・ファイル内にあります。 – Andrei