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 应用程序中做些什么。我的意思是:我有一个带有两个文本框的窗口,用于输入用户和密码。我还需要做什么?

4

2 回答 2

2

如果你想在 Swing 应用程序中使用 Spring Security,你需要GlobalSecurityContextHolderStrategy在你的SecurityContextHolder.

SecurityContextHolderStrategy 的基于静态字段的实现。这意味着 JVM 中的所有实例共享相同的 SecurityContext。这对于诸如 Swing之类的富客户端通常很有用。

查看 Java DocsSecurityContextHolder以了解如何配置它:

将给定的 SecurityContext 与当前执行线程相关联。此类提供了一系列委托给 SecurityContextHolderStrategy 实例的静态方法。该类的目的是提供一种方便的方法来指定应该用于给定 JVM 的策略。这是 JVM 范围的设置,因为此类中的所有内容都是静态的,以便于调用代码时使用。要指定应使用哪种策略,您必须提供模式设置。模式设置是定义为静态最终字段的三个有效 MODE_ 设置之一,或者是提供公共无参数构造函数的 SecurityContextHolderStrategy 具体实现的完全限定类名。有两种方法可以指定所需的策略模式字符串。第一种是通过在 SYSTEM_PROPERTY 上键入的系统属性来指定它。第二种是在使用类之前调用​​ setStrategyName(String)。如果这两种方法都没有使用,则该类将默认使用 MODE_THREADLOCAL,它向后兼容,具有较少的 JVM 不兼容性并且适用于服务器(而 MODE_GLOBAL 绝对不适合服务器使用)。

于 2012-11-12T08:53:24.010 回答
1

You do not want to use the spring framework in a standalone Swing application. For the above authentication, a direct JDBC query is much more simpler, lightweight, straight forward and in general the way to go in desktop RCP applications. It is just a few lines of Java code, maybe less than your XML. If you need more than simply checking username/password, consider advanced frameworks in the RCP area.

于 2012-11-12T00:13:21.943 回答