我使用的是JEE6安全注释、@RolesAllowed("Admin")和编程登录:
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,但对这个应用程序来说太夸张了。
发布于 2012-02-13 07:53:58
没有为此提供API的工具。您可以创建一个Filter来检查某个VM参数或环境变量,甚至是一个JNDI变量,然后自动登录。
例如。
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]);
}https://stackoverflow.com/questions/9251181
复制相似问题