Apache tomcat 版本:6.0.20
如果用户已经登录,并且他尝试从登录页面再次登录,则会遇到 j_security_check 不可用错误。这是正常行为还是我必须做些什么?
实际上我有不同的用户角色来访问不同的页面,当拒绝特定用户访问页面时,我想将他重定向到登录页面,在那里他可以使用相应的凭据登录。
最佳答案
这种行为是正常的:servlet 规范仅在用户请求 protected 资源且用户尚未提供凭据时列出容器管理的身份验证(即登录)过程。所有其他场景均未定义,包括您的场景。
如果您想捕获“禁止”条件,您可以在 WEB-INF/web.xml 中使用
我可能会推荐一个“禁止”页面,上面写着“您无权访问此资源。如果您想以其他用户身份登录以访问它,请单击 [HERE]”,其中[HERE] 是指向 servlet 的链接,它终止用户的 session ,然后重定向到用户试图访问的资源。这将导致容器请求身份验证(即呈现登录表单)、验证凭据并将用户发送到所需资源。
如果您使用容器(和 webapp)以及 servlet 规范的 3.0 版,则有一个新的 HttpServletRequest.login() 方法可用于以编程方式将用户登录到您的 webapp。您也许可以使用它来代替终止 session 并执行所有这些重定向...相反,您可以自己收集用户名和密码,然后让容器为您进行登录。
关于apache - 如果用户已经登录,则 j_security_check 不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10828280/