首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟/模拟/绕过JEE6容器管理的登录?

如何模拟/模拟/绕过JEE6容器管理的登录?
EN

Stack Overflow用户
提问于 2012-02-13 02:00:34
回答 1查看 503关注 0票数 3

我使用的是JEE6安全注释、@RolesAllowed("Admin")和编程登录:

代码语言:javascript
复制
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
request.login(loginUser.getUserName(), loginUser.getPassword());

然而,为了测试,我希望能够“模拟”用户登录,并欺骗用户登录的应用程序,而不实际执行上面的代码。request.login(...)将ping容器进行登录,我只想告诉容器foo用户已经登录,不需要检查密码。我真的不想要一个涉及到编写登录模块或更改整个容器设置的解决方案。

谢谢你们!

编辑#1:我使用的是什么应用程序服务器?

我使用的是GlassFish 3.1.1。然而,如果可能的话,我想要一个使用任何可用的JEE6应用程序接口的“容器独立”的解决方案。

编辑#2: Balus先生(一位受人尊敬的专家)不知道有任何api中立的方式绕过了实际的登录。我想我可以编写自己的"Yes-Man“登录模块,但我很好奇是否有人知道如何在GlassFish环境中专门绕过这一限制。

谢谢!

编辑#3:对于后来发现这个问题的任何人,我将切换到Apache Shiro。我以前用过Spring Security,但对这个应用程序来说太夸张了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-13 07:53:58

没有为此提供API的工具。您可以创建一个Filter来检查某个VM参数或环境变量,甚至是一个JNDI变量,然后自动登录。

例如。

代码语言:javascript
复制
String login = System.getProperty("development.login");

if (login != null && request.getRemoteUser() == null) {
    String[] nameAndPassword = login.split(":"); // Assuming "name:password".
    request.login(nameAndPassword[0], nameAndPassword[1]);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9251181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档