在Java Swing应用程序中实现Spring Security

时间:2012-11-11 23:02:47

标签: java swing spring-security

您是否有人清楚了解如何实施此流程?我知道我们需要一个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 个答案:

答案 0 :(得分:2)

如果要在Swing应用程序中使用Spring Security,则需要在GlobalSecurityContextHolderStrategy中使用SecurityContextHolder

  

SecurityContextHolderStrategy的基于静态字段的实现。   这意味着JVM中的所有实例共享相同的内容   SecurityContext中。这通常适用于富客户端,例如   <强>摇摆

查看SecurityContextHolder的Java文档,了解如何配置:

  

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

答案 1 :(得分:1)

您不希望在独立的Swing应用程序中使用spring框架。对于上述身份验证,直接JDBC查询更简单,轻量,直接,并且通常是桌面RCP应用程序的方式。它只是几行Java代码,可能比你的XML少。如果您需要的不仅仅是检查用户名/密码,请考虑RCP区域中的高级框架。