您是否有人清楚了解如何实施此流程?我知道我们需要一个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应用程序中做些什么。我的意思是:我有一个带有两个文本框的窗口,用于输入用户和密码。还有什么我需要做的?
答案 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区域中的高级框架。