shiro框架是一個安全框架,在進行登錄的時候,如果沒有配置路徑,它會跳到shiro的默認配置的路徑“/”下面,所以總是會出現404的錯誤,因為它的路徑是保存在session中
所以需要我們把session里面的數據清除了,然后再設置跳到需要調的界面,下面是它的操作步驟:
1.首先自己寫一個類繼承類FormAuthenticationFilter,具體的代碼如下:
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
import org.apache.shiro.web.util.WebUtils;
/**
* @author Abby
*
*/
public class MyFormAuthenticationFilter extends FormAuthenticationFilter{
@Override
protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request,
ServletResponse response) throws Exception {
WebUtils.getAndClearSavedRequest(request);
WebUtils.redirectToSavedRequest(request, response, "/main.do");
return false;
}
}
2.在shiro.xml文件里面配置如下的代碼:
<bean id="myFormAuthenticationFilter" class="com.cn.demo.filter.MyFormAuthenticationFilter"/>
<property name="filters">
<map>
<entry key="authc" value-ref="myFormAuthenticationFilter" />
</map>
</property>
3.這樣在啟動進行登錄的時候就不會報錯404的錯誤了
4.在這里注意了,假如配置文件里面的過濾器有多個的時候,如果有多個value-ref就需要如下的配置:
<property name="filters">
<map>
<entry key="logout" value-ref="systemLogoutFilter" />
<entry key="authc" value-ref="myFormAuthenticationFilter" />
</map>
</property>
