Java 程序化Clogin不';行不通
我有企业应用程序和企业客户端应用程序(我使用glassfish服务器)。为了在客户端应用程序中使用ProgrammaticLogin,我应该做什么?每个博客或书籍都描述了如何在数据库、glassfish上的jdbc领域和角色组映射中创建表。就这些。甲骨文官方网站说: 调用 应用程序的编程登录机制(如果安全性 管理器已启用。有关安全管理器的信息,请参阅 server.policy文件。默认情况下,此权限不授予 部署的应用程序,因为这不是标准的JavaEE 机制 要向应用程序授予所需的权限,请添加以下内容 到域dir/config/server.policy文件: 授予代码库“文件:jar文件路径”{ 权限com.sun.appserv.security.ProgrammaticLoginPermission “登录”;} 但是我没有找到任何关于它的例子,所以我不确定它是否是强制性的。 更重要的是,我想应该有一个步骤,我会告诉programmaticologin使用哪个领域?Java 程序化Clogin不';行不通,java,jakarta-ee,Java,Jakarta Ee,我有企业应用程序和企业客户端应用程序(我使用glassfish服务器)。为了在客户端应用程序中使用ProgrammaticLogin,我应该做什么?每个博客或书籍都描述了如何在数据库、glassfish上的jdbc领域和角色组映射中创建表。就这些。甲骨文官方网站说: 调用 应用程序的编程登录机制(如果安全性 管理器已启用。有关安全管理器的信息,请参阅 server.policy文件。默认情况下,此权限不授予 部署的应用程序,因为这不是标准的JavaEE 机制 要向应用程序授予所需的权限,请添加以
现在,ProgrammaticLogin总是返回true(对于错误的密码也是如此),我确信这是因为没有任何教程描述所有必要的步骤。我自己也在尝试同样的事情。同样有趣的是,从我目前在web上发现的情况来看,javaee5规范中为此api指定的所有方法现在都已弃用,并且指定了具有char[]arg1(而不是字符串密码)的方法以供使用。关于这些方法没有任何api信息,简单的password.toCharArray()根本不起作用 另一方面,登录对我来说是可行的,尽管只是部分。虽然它总是返回true,但在登录失败时会引发异常。但我认为它本身并没有执行登录,即使在执行ProgrammaticLogin的登录功能后,容器仍然要求我登录。我在web容器中使用它,我想这可能是因为我没有使用提供HttpServletRequest和Response的函数。。。我在Glassfish域的server.policy中添加了权限,但如下所示:
grant codeBase "file:${com.sun.aas.instanceRoot}/applications/-" {
permission com.sun.appserv.security.ProgrammaticLoginPermission
"login";
};
grant codeBase "file:${com.sun.aas.instanceRoot}/eclipseApps/-" {
permission com.sun.appserv.security.ProgrammaticLoginPermission
"login";
};
编辑:我已经放弃了这种登录方式,至少对于web容器是这样。这对于验证EJB或类似的东西可能仍然有用,至少这一部分可能会起作用
就我而言,我只是在这里使用了BalusC的答案(使用Servlet3.0的HttpServletRequest.login()),另一个高投票率的答案可能也会这样做