小编raf*_*ael的帖子

如何在给定LdapContext的ldap whith java中检查用户密码?

我有一个Web应用程序,用户必须登录.密码存储在LDAP服务器中.有关LDAP服务器的所有信息都作为外部jndi资源存储在应用程序服务器(glassfish)中.所以我的应用程序对LDAP服务器一无所知,只得到像这样的LdapContext:

@Resource(name = "ldap/users")
private LdapContext ctx;
Run Code Online (Sandbox Code Playgroud)

使用此上下文,可以轻松更改或读取为用户存储的信息,但如何检查其密码?通常我会做一个新的连接来检查用户密码.像这样:

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=S. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");

DirContext ctx = new InitialDirContext(env);
Run Code Online (Sandbox Code Playgroud)

但由于我不知道这个参数我不能这样做.那么如何使用我的LdapContext检查用户的密码是否正确?密码以加密方式存储(ssha),所以我不能只比较属性.

谢谢拉斐尔

java authentication web-applications ldap

18
推荐指数
2
解决办法
5万
查看次数

firefox用explorer打开本地链接到目录

在我们内部使用的网站上,我显示了本地文件和文件夹的链接.链接是这样的:

href="file://C:/example/"
href="file://C:/example/test.odt"
Run Code Online (Sandbox Code Playgroud)

问题是,目录的链接确实在firefox本身打开,并带有无用的目录列表.没用是因为你只能看到文件或打开它们但不能复制,插入,删除......文件链接工作正常,文件由OpenOffice打开.通过更改firefox的配置并将以下键设置为false,我可以使用explorer.exe打开该目录,但是对于该文件,我必须选择正确的应用程序.

network.protocol-handler.expose.file
Run Code Online (Sandbox Code Playgroud)

有人知道如何让两者都像我想要的那样工作吗?表示目录由explorer.exe显示,所有文件由正确的应用程序打开.这可以通过配置Firefox或Windows,更改链接,甚至编写一个小程序来正确打开所有文件协议,并将用作firefox中文件协议的协议处理程序.

谢谢拉斐尔

windows firefox

13
推荐指数
2
解决办法
2万
查看次数

如何在没有按钮的情况下在vaadin中启动文件下载?

我知道FileDownloader用a 创建一个和调用扩展非常容易Button.但是如何在没有Button?的情况下开始下载?
在我的特定情况下,我现在有一个ComboBox和我想要发送给用户的文件是在根据输入更改其值后生成的.应立即发送该文件,而无需等待再次单击.这很容易吗?

谢谢拉斐尔

vaadin vaadin7

13
推荐指数
2
解决办法
1万
查看次数

我必须把@DeclareRoles 放在哪里?

我基本上了解@DeclareRolesand的功能@RolesAllowed,但我不确定在哪里@DeclareRoles正确添加。我在 glassfish 4 中使用带有 ejb 会话 bean 和 cdi 的 vaadin 应用程序进行测试。该应用程序被打包成战争而不是耳朵。

  • @DeclareRoles类:
    显然没有什么作品。HttpServletRequest.isUserInRole()并且SessionContext.isCallerInRole()总是返回false。@RolesAllowed总是拒绝访问。
  • @DeclareRoles在 Servlet 上:
    @RolesAllowed并且HttpServletRequest.isUserInRole()按预期工作。SessionContext.isCallerInRole()总是返回false。
  • @DeclareRoles在会话 bean: 上
    @RolesAllowedHttpServletRequest.isUserInRole()并按SessionContext.isCallerInRole()预期工作。即使SessionContext.isCallerInRole()在与使用不同的会话 bean 中调用@DeclareRoles

我现在的问题是:

  1. 放在哪里合适@DeclareRoles
  2. 可以只设置一次还是应该注释每个使用SessionContext.isCallerInRole()or 的bean @RolesAllowed

java security jakarta-ee

7
推荐指数
1
解决办法
1161
查看次数

如何在窗口外单击鼠标关闭Vaadin子窗口?

我正在使用vaadin 7,在我的应用程序中,我有时会使用子窗口.在一个案例中,我有一个模态窗口,里面有几个组件.单击模态窗口内的某些组件时,它会打开另一个窗口.我希望这个窗口在用户点击它时自动关闭(例如再次在模态窗口上).在Vaadin采样器中,这种行为似乎在显示源时实现(单击右上角的源按钮).如果不是从模态窗口打开,则行为应该相同,但是从UI或任何其他子窗口打开.

我尝试了几件事:

  • 使用Popupview是不可能的,因为我需要从组件(按钮或图像)打开窗口

  • 将BlurListener添加到新窗口不起作用,因为如果我在窗口内单击,则会触发blurevent(例如移动窗口)

  • 将ClickListener添加到UI没有帮助,因为单击模式窗口时未触发事件.

实现这一目标的正确方法是什么?

谢谢拉斐尔

window vaadin vaadin7

5
推荐指数
1
解决办法
7171
查看次数