2016-08-03 33 views
0

我想通过使用j_security_control设置webapp的登录功能,但最近当我登录时,我一直在从标题中获取错误。下面是相关登录JSP:Tomcat 8 - 无效的直接引用到表单登录页

<div class="loginContainer"> 
     <form role="form" method="POST" action="<%=request.getContextPath()%>/j_security_check"> 
      <c:if test="${not empty param.Retry}"> 
       <div class="errorText"> 
        <p>Login failed. Please try again.</p> 
       </div> 
      </c:if> 
      <div class="username"> 
       <label class="loginText" for="inputUser">User</label> 
       <input type="text" class="form-control" id="inputUser" placeholder="Username" name="j_username" autofocus> 
      </div> 
      <div class="password"> 
       <label class="loginText" for="inputPassword">Password</label> 
       <input type="password" class="form-control" id="inputPassword" placeholder="Password" name="j_password"> 
      </div> 
      <div> 
       <button type="submit" class="btn loginButton" id="loginButton">Login</button> 
      </div> 
     </form> 
    </div> 

它正在从一个标题称为例如:

<c:choose> 
    <c:when test="${not empty pageContext.request.userPrincipal}"> 
     <a id="logout" href="${base}/jsp/login/logout.jsp" 
      class="fse-hid-small navbartext" 
      data-ng-class="{'selected': idSelected === 'logout'}" 
      title="Goodbye!">LOGOUT</a> 
    </c:when> 
    <c:otherwise> 
     <a id="login" href="${base}/jsp/login/login.jsp" 
      class="fse-hid-small navbartext" 
      data-ng-class="{'selected': idSelected === 'login'}" 
      title="Login Here!">LOGIN</a> 
    </c:otherwise> 
</c:choose> 

而且在web.xml中定义的:前一段时间

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>InternalUserRole</web-resource-name> 
     <url-pattern>/jsp/internal/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>InternalUser</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/jsp/login/login.jsp</form-login-page> 
     <form-error-page>/jsp/login/login.jsp?Retry=True</form-error-page> 
    </form-login-config> 
</login-config> 

这是工作不幸的是,我不知道它何时破裂。无论如何,我做这项工作?

+0

我试过清除我的缓存和编码的URL,但我有同样的问题。 –

+0

我试图做一个安全的重定向,并给我一个本地主机拒绝连接错误 –

回答

0

鉴于没有其他人有解决方案,我管理一个hacky解决方案,以通过这个可怜的tomcat安全问题。

  1. 创建一个简单的servlet,重定向到根页面。
  2. 创建一个web资源收集条目,使该servlet页面安全并需要一个角色。
  3. 使您到登录页面的链接指向您创建的servlet。

当您点击该链接时,您将被重定向到您想要转到的登录页面。登录,您将被重定向到根索引页面。一个简单的方法来解决一个令人难以置信的恼人的安全错误,甚至没有什么帮助。