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

我在我的Web应用程序中使用了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,我无法控制它的执行。 请帮忙。 这似乎并不那么难,但看起来我错过了一些东西。

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

现在,你可能想知道它会有什么好处?:)好吧,只要按照它就可以完成。 :p

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

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