0
<sec:authorize ifAnyGranted="<%=dRoles%>">
    <meta http-equiv="REFRESH" content="0;url=public/First.jsp">
</sec:authorize>

<sec:authorize ifAnyGranted="<%=aRoles%>">      
      <meta http-equiv="REFRESH" content="0;url=public/Second.jsp">
</sec:authorize>

<sec:authorize ifAnyGranted="<%=bRoles%>">  
    <meta http-equiv="REFRESH" content="0;url=public/Third.jsp">
</sec:authorize>

スプリングセキュリティを使用しています。ログインに成功すると、Startup.jspがロードされます(default-target-url = "/ Startup.jsp)。Startup.jspに上記のコードがあります。Springセキュリティタグを使用しています。ユーザーが上記の3つのjspsすべてにアクセスできると考えてください。 。問題は、IE7ではFirst.jspが読み込まれるが、他のブラウザではThird.jspが読み込まれることです。両方のブラウザで同じjspを表示するにはどうすればよいですか。

ありがとう!

4

1 に答える 1

0

ユーザーが のロールdRolesとのロールを持っている状況にあると思います。そのbRolesため、コードは 2 つの異なるメタ リフレッシュをブラウザに送信します。

まず、メタ リフレッシュを使用せず、実際のリダイレクトまたは転送を使用します (これは JSP ではなく、コントローラー、フィルター、またはサーブレットで行う必要があります)。

本当に JSP ソリューションを使い続けたい場合は、次のようなものがうまくいくはずです。

<c:set var="refreshSent" value="${false}"/>

<sec:authorize ifAnyGranted="<%=dRoles%>">
    <meta http-equiv="REFRESH" content="0;url=public/First.jsp">
    <c:set var="refreshSent" value="${true}"/>
</sec:authorize>

<sec:authorize ifAnyGranted="<%=aRoles%>">
    <c:if test="${!refreshSent}">      
        <meta http-equiv="REFRESH" content="0;url=public/Second.jsp">
        <c:set var="refreshSent" value="${true}"/>
    </c:if>
</sec:authorize>

<sec:authorize ifAnyGranted="<%=bRoles%>">  
    <c:if test="${!refreshSent}">
        <meta http-equiv="REFRESH" content="0;url=public/Third.jsp">
        <c:set var="refreshSent" value="${true}"/>
    </c:if>
</sec:authorize>
于 2012-09-20T10:38:00.313 に答える