shiro修正はログインしていないかsessionが失効し、ajaxに基づいてjsonを返す
36989 ワード
転載先:https://blog.csdn.net/football98/article/details/76660920
shiroフレームワークを使用して権限制御を行うと、ログインまたはsessionが無効になりajaxリクエストを行うと、ログインページがジャンプせず、正しい結果が返されないだけです.
したがってajaxリクエストの特殊な処理を解決する必要がある.
1.再FormAuthenticationFilterクラスonAccessDeniedメソッド.異なる休暇の仕方によって、異なる結果を返させます.
shiroフレームワークを使用して権限制御を行うと、ログインまたはsessionが無効になりajaxリクエストを行うと、ログインページがジャンプせず、正しい結果が返されないだけです.
したがってajaxリクエストの特殊な処理を解決する必要がある.
1.再FormAuthenticationFilterクラスonAccessDeniedメソッド.異なる休暇の仕方によって、異なる結果を返させます.
-
import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
-
import javax.servlet.ServletRequest;
-
import javax.servlet.ServletResponse;
-
import javax.servlet.http.HttpServletRequest;
-
import java.io.PrintWriter;
-
-
public
class ShiroFormAuthenticationFilter extends FormAuthenticationFilter {
-
-
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
-
if(
this.isLoginRequest(request, response)) {
-
if(
this.isLoginSubmission(request, response)) {
-
return
this.executeLogin(request, response);
-
}
else {
-
return
true;
-
}
-
}
else {
-
String header = ((HttpServletRequest) request).getHeader(
"Content-Type");
-
if(header !=
null && header.equals(
"application/x-www-form-urlencoded")){
-
response.setCharacterEncoding(
"UTF-8");
-
PrintWriter out = response.getWriter();
-
out.print(
"{\"isOver\" : true }");
-
out.flush();
-
out.close();
-
}
else{
-
this.saveRequestAndRedirectToLogin(request, response);
-
}
-
return
false;
-
}
-
}
-
-
}
2、 shiro , 。
-
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
-
<property name="securityManager" ref="securityManager">
property>
-
<property name="loginUrl" value="/">
property>
-
<property name="unauthorizedUrl" value="/">
property>
-
<property name="filters">
-
<map>
-
<entry key="authc">
-
<bean class="zteict.qinhuangdao.framework.common.shiro.shiro.ShiroFormAuthenticationFilter">
bean>
-
entry>
-
map>
-
property>
-
-
<property name="filterChainDefinitions">
-
<value>
-
-
/components/** = anon
-
/css/** = anon
-
/images/** = anon
-
/lib/** = anon
-
/LoginController.js = anon
-
/loginController/login.do = anon
-
-
/** = authc
-
value>
-
property>
-
bean>
3、 ajax , angularjs, post service, js , 。
-
/**
-
* post
-
* @param url
-
* @param data
-
* @param callback
-
*/
-
var commPost =
function (url,data,callback) {
-
$http({
-
method:
'POST',
-
url:baseUrl+url,
-
data : data
-
}).then(
function(result) {
-
if(result.data.isOver !=
undefined && result.data.isOver){
-
//
-
window.location.href = baseUrl+
"pages/common/login/login.html";
-
}
else{
-
callback(result.data);
-
}
-
});
-
};
-