私は春のセキュリティ3.0.6を使用しています。次の例外がスローされ春のセキュリティ:秒:authorizeタグはストリームを閉じた例外を与えます
<sec:authorize access="hasRole('ROLE_PREVIOUS_ADMINISTRATOR')">
<a href="<s:url value='/exitUser' />">
Switch back to your own role</a>
</sec:authorize>
:次のJSPスニペットは犯人である
Struts has detected an unhandled exception:
# Messages: Stream closed
File: org/apache/jasper/runtime/JspWriterImpl.java
Line number: 210
Stacktraces
java.io.IOException: Stream closed
org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:210)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:177)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:915)
org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:652)
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:123)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
私は成功し、他のユーザーをロールに切り替えているし、今に切り替えるためのリンクを表示しようとしている彼彼が実際に交換した場合に限ります。ユーザーがロールを切り替えた場合、ROLE_PREVIOUS_ADMINISTRATORがあることがわかりますので、上記を行っています。
私は経由タグライブラリが含まれている:私は私の春のセキュリティ、XMLで
<http use-expressions="true">
を指定していなかった
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
タグこのエラーは通常
authorize
(または任意の)で使用される式を評価するには根本的なエラーを隠しているようです。 tomcatログを調べて見つけます。 –