2

このプロセスをどのように実装できるかについて明確な考えを持っている人はいますか? 次のようにデータベースにクエリを入力する XML が必要であることは理解しています。

<security:authentication-manager>
        <security:authentication-provider >
            <security:jdbc-user-service data-source-ref="dataSource"
              users-by-username-query="
              select  emailid username,password,'true' enabled from tbl_LoginDetails
              where emailid=?"
             authorities-by-username-query="
             select a.emailid username,b.authority from tbl_LoginDetails a,tbl_UserRoles b
            where a.userId=b.userId
            and a.emailid=?"/>
            <security:password-encoder  ref="passwordEncoder">
            </security:password-encoder>
        </security:authentication-provider>
    </security:authentication-manager>
<bean name="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">

しかし、それでは、Java Swing アプリケーションから他に何をしなければなりませんか。つまり、ユーザーとパスワードを入力するための 2 つのテキスト ボックスがあるウィンドウがあります。他に何をしなければなりませんか?

4

2 に答える 2

2

Swing アプリケーションで Spring Security を使用する場合GlobalSecurityContextHolderStrategyは、SecurityContextHolder.

SecurityContextHolderStrategy の静的フィールドベースの実装。これは、JVM 内のすべてのインスタンスが同じ SecurityContext を共有することを意味します。これは通常、 Swingなどのリッチ クライアントで役立ちます 。

SecurityContextHolder構成方法については、Java Docs を参照してください。

指定された SecurityContext を現在の実行スレッドに関連付けます。このクラスは、SecurityContextHolderStrategy のインスタンスに委譲する一連の静的メソッドを提供します。このクラスの目的は、特定の JVM に使用する戦略を指定する便利な方法を提供することです。これは、コードの呼び出しを容易にするためにこのクラスのすべてが静的であるため、JVM 全体の設定です。使用する戦略を指定するには、モード設定を指定する必要があります。モード設定は、静的最終フィールドとして定義された 3 つの有効な MODE_ 設定の 1 つ、または引数なしのパブリック コンストラクターを提供する SecurityContextHolderStrategy の具体的な実装に対する完全修飾クラス名です。目的の戦略モード文字列を指定するには、2 つの方法があります。1 つ目は、SYSTEM_PROPERTY をキーとするシステム プロパティを介して指定することです。2 つ目は、クラスを使用する前に setStrategyName(String) を呼び出すことです。どちらの方法も使用しない場合、クラスはデフォルトで MODE_THREADLOCAL を使用します。これは下位互換性があり、JVM の非互換性が少なく、サーバーに適しています (一方、MODE_GLOBAL はサーバーでの使用には明らかに不適切です)。

于 2012-11-12T08:53:24.010 に答える
1

スタンドアロンの Swing アプリケーションで spring フレームワークを使用したくない場合。上記の認証の場合、直接 JDBC クエリは、はるかに単純で、軽量で、簡単で、一般的にデスクトップ RCP アプリケーションで使用する方法です。これはほんの数行の Java コードであり、XML よりも少ないかもしれません。ユーザー名とパスワードを確認するだけでは不十分な場合は、RCP 領域の高度なフレームワークを検討してください。

于 2012-11-12T00:13:21.943 に答える