Spring SecurityのhasPermissionを使用している場合、ページへのアクセスが拒否されました

Kleber Mota

私のプロジェクトでは、コントローラーのメソッドは次の構造になっています。

@Controller
@RequestMapping(value="privado")
public class PrivadoController {

    @RequestMapping(value="admin")
    @PreAuthorize("hasPermission(#usuario, 'admin_main')")
    public ModelAndView admin() {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("privado/admin");
        return mav;
    }

    @RequestMapping(value="customer")
    @PreAuthorize("hasPermission(#usuario, 'customer_main')")
    public ModelAndView customer() {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("privado/customer");
        return mav;
    }

}

メソッドhasPermissionは、次のCustomPermissionEvaluatorクラスに実装されています。

@Component
public class CustomPermissionEvaluator implements PermissionEvaluator {

    public CustomPermissionEvaluator() {
    }

    @Override
    public boolean hasPermission(Authentication arg0, Object arg1, Object arg2) {
        System.out.println("CustomPermissionEvaluator.hasPermission");
        if (arg0 == null || !arg0.isAuthenticated())
            return false;
        else
            return arg0.getAuthorities().contains(arg1);
    }

    @Override
    public boolean hasPermission(Authentication arg0, Serializable arg1, String arg2, Object arg3) {
        throw new RuntimeException("Id-based permission evaluation not currently supported.");
    }

}

私の問題は、正しいログイン資格情報を通知し、データベースに保存されているユーザーの適切な役割とアクセス許可を持っているにもかかわらず、デフォルトのアクセス拒否ページに直面していることです(プロジェクトにこのエラーのカスタムページがあります)。

誰もが私がここで間違っていることを見ることができますか?

ps。:私のアプリケーションのセキュリティレイヤーの完全なコードはここにあります:

https://github.com/klebermo/webapp2/tree/master/src/com/spring/webapp/lojavirtual/config/security

Kleber Mota

コードをさらに注意深く分析した後、私はついにこの問題を解決することができました。メソッドの本体で間違った引数を使用していることがあります。CustomPermissionEvaluatorの最終的なコードは次のとおりです。

@Component
public class CustomPermissionEvaluator implements PermissionEvaluator {

    public CustomPermissionEvaluator() {
    }

    public boolean hasPermission(Authentication arg0, Object arg1) {
        System.out.println("CustomPermissionEvaluator.hasPermission");
        System.out.println("arg0 = "+arg0);
        System.out.println("arg1 = "+arg1);

        if (arg0 == null || !arg0.isAuthenticated()) {
            System.out.println("false");
            return false;
        }
        else {
            System.out.println("true");
            for(GrantedAuthority authority: arg0.getAuthorities()) {
                if(authority.getAuthority().equals(arg1))
                    return true;
            }
            return false;
        }
    }

    @Override
    public boolean hasPermission(Authentication arg0, Object arg1, Object arg2) {
        System.out.println("CustomPermissionEvaluator.hasPermission");
        System.out.println("arg0 = "+arg0);
        System.out.println("arg1 = "+arg1);
        System.out.println("arg2 = "+arg2);

        if (arg0 == null || !arg0.isAuthenticated()) {
            System.out.println("false");
            return false;
        }
        else {
            System.out.println("true");
            for(GrantedAuthority authority: arg0.getAuthorities()) {
                if(authority.getAuthority().equals(arg2))
                    return true;
            }
            return false;
        }
    }

    @Override
    public boolean hasPermission(Authentication arg0, Serializable arg1, String arg2, Object arg3) {
        throw new RuntimeException("Id-based permission evaluation not currently supported.");
    }

}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring SecurityとKeycloakによって「アクセスが拒否されました」というエラーが表示されるのはなぜですか?

分類Dev

アクセスが拒否され、申し訳ありませんが、プラグインSpring SecurityコアをGrailsで2.0バージョンにアップグレードした後、このページを表示する権限がありません

分類Dev

Spring Security:@PreAuthorizeアノテーションが欠落している場合、コントローラーメソッドへのアクセスを拒否します

分類Dev

JHipster Spring ConfigServerを使用してアクセスが拒否されました

分類Dev

JHipster Spring ConfigServerを使用してアクセスが拒否されました

分類Dev

Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

分類Dev

Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

分類Dev

Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

分類Dev

ユーザー '' @ 'localhost'のアクセスが拒否されました(パスワードを使用:NO)spring-boot

分類Dev

Springブートアプリケーションへのアクセスが、Dockerツールボックスで実行されているIP192.168.99.100との接続を拒否しました

分類Dev

Spring Boot:@CrossOriginが使用されている場合でも、オリジンFRONTENDからのBACK_ENDでのXMLHttpRequestへのアクセスがCORSポリシーによってブロックされました

分類Dev

java.sql.SQLException:Springのユーザー '' @ 'localhost'(パスワード:NOを使用)のアクセスが拒否されました

分類Dev

Springセキュリティ4:管理者ロールのアクセスが拒否されました

分類Dev

Spring Boot(データベース 'myappdb'へのユーザー '' @ 'localhost'のアクセスが拒否されました)

分類Dev

java.sql.SQLException:ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)Spring boot

分類Dev

Spring Securityでユーザーが特定のコントローラーまたはURLにアクセスすることを許可されていない場合は、ログインページを表示する必要があります。それを達成する方法は?

分類Dev

Spring Security-アクセスが拒否されました(ユーザーは匿名ではありません)spring-security-core-4.0.3.RELEASE

分類Dev

java.security.AccessControlException:アクセスが拒否されました( "java.lang.RuntimePermission" "accessClassInPackage.sun.reflect.annotation")Spring

分類Dev

java.security.AccessControlException:アクセスが拒否されました( "java.lang.RuntimePermission" "accessClassInPackage.sun.reflect.annotation")Spring

分類Dev

Spring OAuth2でセキュリティを構成する:認証要求のアクセスが拒否されました

分類Dev

処理されない場合、spring-integrationamqpはメッセージを拒否します

分類Dev

LDAPユーザー認証に失敗しました-未処理のSpring認証「アクセスが拒否されました」

分類Dev

ELB&Spring Boot:サーバーポートが正しく構成されていても、「アップストリームへの接続中に(111:接続が拒否されました)」というエラーが発生しますか?

分類Dev

Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

分類Dev

Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

分類Dev

Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

分類Dev

値を更新したい場合、レジストリキーへのアクセスが拒否されます

分類Dev

Spring Bootアプリケーションはこのエラーを出します:ユーザー 'root' @ 'localhost'のアクセスが拒否されましたが、コンソールでログインするとすべてが正常に機能します

分類Dev

Spring Security Java構成は、認証されたソースでのみ使用可能なJSPへのアクセス要求をインターセプトしません

Related 関連記事

  1. 1

    Spring SecurityとKeycloakによって「アクセスが拒否されました」というエラーが表示されるのはなぜですか?

  2. 2

    アクセスが拒否され、申し訳ありませんが、プラグインSpring SecurityコアをGrailsで2.0バージョンにアップグレードした後、このページを表示する権限がありません

  3. 3

    Spring Security:@PreAuthorizeアノテーションが欠落している場合、コントローラーメソッドへのアクセスを拒否します

  4. 4

    JHipster Spring ConfigServerを使用してアクセスが拒否されました

  5. 5

    JHipster Spring ConfigServerを使用してアクセスが拒否されました

  6. 6

    Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

  7. 7

    Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

  8. 8

    Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

  9. 9

    ユーザー '' @ 'localhost'のアクセスが拒否されました(パスワードを使用:NO)spring-boot

  10. 10

    Springブートアプリケーションへのアクセスが、Dockerツールボックスで実行されているIP192.168.99.100との接続を拒否しました

  11. 11

    Spring Boot:@CrossOriginが使用されている場合でも、オリジンFRONTENDからのBACK_ENDでのXMLHttpRequestへのアクセスがCORSポリシーによってブロックされました

  12. 12

    java.sql.SQLException:Springのユーザー '' @ 'localhost'(パスワード:NOを使用)のアクセスが拒否されました

  13. 13

    Springセキュリティ4:管理者ロールのアクセスが拒否されました

  14. 14

    Spring Boot(データベース 'myappdb'へのユーザー '' @ 'localhost'のアクセスが拒否されました)

  15. 15

    java.sql.SQLException:ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)Spring boot

  16. 16

    Spring Securityでユーザーが特定のコントローラーまたはURLにアクセスすることを許可されていない場合は、ログインページを表示する必要があります。それを達成する方法は?

  17. 17

    Spring Security-アクセスが拒否されました(ユーザーは匿名ではありません)spring-security-core-4.0.3.RELEASE

  18. 18

    java.security.AccessControlException:アクセスが拒否されました( "java.lang.RuntimePermission" "accessClassInPackage.sun.reflect.annotation")Spring

  19. 19

    java.security.AccessControlException:アクセスが拒否されました( "java.lang.RuntimePermission" "accessClassInPackage.sun.reflect.annotation")Spring

  20. 20

    Spring OAuth2でセキュリティを構成する:認証要求のアクセスが拒否されました

  21. 21

    処理されない場合、spring-integrationamqpはメッセージを拒否します

  22. 22

    LDAPユーザー認証に失敗しました-未処理のSpring認証「アクセスが拒否されました」

  23. 23

    ELB&Spring Boot:サーバーポートが正しく構成されていても、「アップストリームへの接続中に(111:接続が拒否されました)」というエラーが発生しますか?

  24. 24

    Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

  25. 25

    Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

  26. 26

    Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

  27. 27

    値を更新したい場合、レジストリキーへのアクセスが拒否されます

  28. 28

    Spring Bootアプリケーションはこのエラーを出します:ユーザー 'root' @ 'localhost'のアクセスが拒否されましたが、コンソールでログインするとすべてが正常に機能します

  29. 29

    Spring Security Java構成は、認証されたソースでのみ使用可能なJSPへのアクセス要求をインターセプトしません

ホットタグ

アーカイブ