我一直在使用Spring Security 3.x来处理我的项目的用户身份validation,到目前为止,它已经完美运行。 我最近收到了一个新项目的要求。 在这个项目中,需要两套用户authentication:一种是针对LDAPauthentication员工,另一种是针对数据库authentication客户。 我有点难以理解如何在Spring Security中进行configuration。 我最初的想法是创build一个有以下领域的login屏幕: – 单选button字段 – 供用户select是员工还是客户。 j_username用户字段。 j_password密码字段。 如果用户select“员工”,那么我希望Spring Security根据LDAP对他们进行身份validation,否则证书将根据数据库进行身份validation。 但是,问题是表单将被提交给/j_spring_security_check并且我无法将单选button字段发送给我实现的自定义身份validation提供程序。 我最初的想法是我可能需要两个表单提交url,而不是依靠默认的/j_spring_security_check 。 每个URL将由不同的身份validation提供程序处理,但是我不确定如何在Spring Security中configuration它。 我知道在Spring Security中,我可以configuration回退身份validation,例如,如果LDAP身份validation失败,那么它将回退到数据库身份validation,但这不是我在这个新项目中拍摄的内容。 有人可以分享如何在Spring Security 3.x中configuration它吗? 谢谢。 更新 – 01-28-2011 – @ EasyAngel的技术 我正在努力做到以下几点: 员工表单login提交给/j_spring_security_check_for_employee 客户表单login提交给/j_spring_security_check_for_customer 我想要2种不同的表单login的原因是允许我根据用户不同的方式处理authentication,而不是做回退authentication。 就我而言,员工和客户可能有相同的用户ID。 我并入了@ EasyAngel的想法,但必须replace一些弃用的类。 我目前面临的问题是没有筛选进程URLS似乎注册在Spring安全,因为我不断收到Error 404: SRVE0190E: File not found: /j_spring_security_check_for_employee 。 我的直觉是springSecurityFilterChain bean没有正确连线,因此我的自定义filter根本没有使用。 顺便说一下,我正在使用WebSphere,并且在服务器中设置了com.ibm.ws.webcontainer.invokefilterscompatibility=true属性。 我能够毫无问题地打到默认的/j_spring_security_check 。 这是我完整的安全configuration: <?xml […]
我有一个数字从1到100(包括两个端点)的数组。 数组的大小为100.数字随机添加到数组中,但数组中有一个随机空槽。 find那个插槽的最快方法是什么,以及插槽中应该放置的数量是多less? Java解决scheme是可取的。
我想用java来把下面的数字格式化成他们旁边的数字: 1000 to 1k 5821 to 5.8k 10500 to 10k 101800 to 101k 2000000 to 2m 7800000 to 7.8m 92150000 to 92m 123200000 to 123m 右边的数字是长整数,左边的数字是string。 我应该如何解决这个问题。 我已经做了这个小algorithm,但我认为可能已经发明了一些更好的工作,并不需要额外的testing,如果我开始处理数十亿和万亿:) 其他要求: 格式应该有最多4个字符 上面的意思是1.1k就行了11.2k不行。 7.8米就可以了19.1米不是。 小数点前一位只允许有小数点。 小数点前两位表示小数点后的数字。 四舍五入是必要的。 (附加k和m后显示的数字更多的是模拟量表,表示近似不精确的逻辑项,因此舍入无关紧要,主要是由于variables的性质,即使在查看caching的结果时,也可能增加或减less几位数字。
我读过,可以使用Enum来实现Java中的Singleton ,例如: public enum MySingleton { INSTANCE; } 但是,上述工作如何? 具体来说,一个Object必须被实例化。 在这里, MySingleton如何被实例化? 谁在做new MySingleton() ?
我正在编写一个需要SSL客户端身份validation的Android应用程序。 我知道如何为桌面Java应用程序创build一个JKS密钥库,但是Android只支持BKS格式。 我试图创build密钥库结果的每一种方法导致以下错误: handling exception: javax.net.ssl.SSLHandshakeException: null cert chain 所以看起来客户端永远不会发送正确的证书链,可能是因为我没有正确地创build密钥存储。 我无法启动SSLdebugging,就像我可以在dekstop上一样,所以这使得这比应该更困难。 以下是创buildBKS 信任库的命令: keytool -importcert -v -trustcacerts -file "cacert.pem" -alias ca -keystore "mySrvTruststore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar" -storetype BKS -storepass testtest 这是我试过的命令不能创build一个BKS客户机密钥库 : cat clientkey.pem clientcert.pem cacert.pem > client.pem keytool -import -v -file <(openssl x509 -in client.pem) -alias client -keystore "clientkeystore" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar" […]
我正在研究Spring Data JPA。 考虑下面的例子,我将默认使用所有的crud和finderfunction,如果我想定制一个finder,那么在界面本身也可以轻松完成。 @Transactional(readOnly = true) public interface AccountRepository extends JpaRepository<Account, Long> { @Query("<JPQ statement here>") List<Account> findByCustomer(Customer customer); } 我想知道如何添加一个完整的自定义方法与上述AccountRepository的实现? 由于它的接口,我不能在那里实现的方法。
要allocate()或allocateDirect() ,这是问题。 多年以来,我只是坚持这样一种想法,即由于DirectByteBuffer是在操作系统级别的直接内存映射,它比HeapByteBuffer更快地执行get / put调用。 直到现在,我从来没有真正有兴趣find有关情况的确切细节。 我想知道两种types的ByteBuffer的哪一种更快,以及在什么条件下。
我的代码在这里检测,如果mimeType是等于一些MIMEtypes,如果是,它将做一定的转换 public void convertToMp3(File src, File target,String mimeType){ if(mimeType.equals("audio/mpeg")){ … }else if(mimeType.equals("audio/wav")){ mp3ToWav(); }else if(mimeType.equals("audio/ogg")){ … }else if(…){ … //More if and else here } 我已经缩短了我的代码,因为它有很多其他的if语句,什么样的devise模式适合去除许多if和else或else语句?
JVM中系统属性System.getProperties()和环境variablesSystem.getenv()之间有什么区别?
我使用log4j,并希望将某些logging器的输出路由到特定的文件。 我已经有了多个appender。 现在,为了使debugging更容易,我想告诉log4j,特定类(例如foo.bar.Baz)生成的输出应写入特定的日志文件。 可以这样做吗?