有关j_security_check,j_username和j_password的Servlet安全性问题

时间:2010-03-19 16:08:38

标签: java

我在我的网络应用程序中使用了jdbcRealm,它工作正常。我在web.xml中也定义了所有约束。像url pattern / Admin / *的所有页面一样只能由admin访问。我有一个使用标准j_security_check,j_username和j_password的登录表单。

现在,当我键入Admin / home.jsf时,它正确地重定向了login.jsf,当我输入密码时,我被重定向到home.jsf。这工作正常,但问题是我直接转到login.jsf,然后键入密码和用户名。这次它再次将我重定向到login.jsf。有没有什么办法可以指定成功登录时哪个页面要去?我需要为不同的角色指定不同的不同页面。对于Admin,一般用户是/Admin/home.jsf,它是/General/home.jsf,因为登录表单在不同类型的用户之间共享。我在哪里指定所有这些东西?

其次,我希望在登录表单末尾有一个记住我的复选框。我该怎么做呢?默认情况下,它被提交给j_security_check servlet,我无法控制它的执行。请帮忙。这似乎并不那么难,但看起来我错过了一些东西。

1 个答案:

答案 0 :(得分:0)

我找到了自己问题的答案。这适用于将来放弃此主题的任何新手。好吧,我经过深思熟虑后发现的解决方案是我创建了一个文件夹,一个jsp页面说了flag.jsp。接下来,我将访问权限授予所有角色。

现在,您可能想知道它会有什么用处?:)好吧,只需按照它就可以完成。 :P

接下来在web.xml中的welcome文件中提到此文件的url。因此,当应用程序启动时,它将转到此URL并且容器将发现我未经身份验证,因此将我重定向到登录页面。而已。现在,最后一部分是你可以在我们的共享角色jsp文件中编写简单的scriplets并根据角色重定向到home。 例如。如果httpservletrequest#isUserInRole(“Admin”),则重定向到“/admin/home.jsf”,依此类推。

嗯,这不是那么有效,但重要的是它有效! :)。这个想法今天意外地碰到了我。我想,现在我可以休息并轻松使用容器管理的安全性。等待你的评论。