Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 程序化Clogin不';行不通_Java_Jakarta Ee - Fatal编程技术网

Java 程序化Clogin不';行不通

Java 程序化Clogin不';行不通,java,jakarta-ee,Java,Jakarta Ee,我有企业应用程序和企业客户端应用程序(我使用glassfish服务器)。为了在客户端应用程序中使用ProgrammaticLogin,我应该做什么?每个博客或书籍都描述了如何在数据库、glassfish上的jdbc领域和角色组映射中创建表。就这些。甲骨文官方网站说: 调用 应用程序的编程登录机制(如果安全性 管理器已启用。有关安全管理器的信息,请参阅 server.policy文件。默认情况下,此权限不授予 部署的应用程序,因为这不是标准的JavaEE 机制 要向应用程序授予所需的权限,请添加以

我有企业应用程序和企业客户端应用程序(我使用glassfish服务器)。为了在客户端应用程序中使用ProgrammaticLogin,我应该做什么?每个博客或书籍都描述了如何在数据库、glassfish上的jdbc领域和角色组映射中创建表。就这些。甲骨文官方网站说:

调用 应用程序的编程登录机制(如果安全性 管理器已启用。有关安全管理器的信息,请参阅 server.policy文件。默认情况下,此权限不授予 部署的应用程序,因为这不是标准的JavaEE 机制

要向应用程序授予所需的权限,请添加以下内容 到域dir/config/server.policy文件:

授予代码库“文件:jar文件路径”{ 权限com.sun.appserv.security.ProgrammaticLoginPermission “登录”;}

但是我没有找到任何关于它的例子,所以我不确定它是否是强制性的。 更重要的是,我想应该有一个步骤,我会告诉programmaticologin使用哪个领域?
现在,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()),另一个高投票率的答案可能也会这样做