shiro修改没有登录或者session失效,根据ajax返回json
来源:互联网 发布:电路原理图软件 编辑:程序博客网 时间:2024/06/05 14:28
首先shiro默认的过滤器有哪些?
名称类名anonorg.apache.shiro.web.filter.authc.AnonymousFilterauthcorg.apache.shiro.web.filter.authc.FormAuthenticationFilterauthcBasicorg.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilterlogoutorg.apache.shiro.web.filter.authc.LogoutFilternoSessionCreationorg.apache.shiro.web.filter.session.NoSessionCreationFilterpermsorg.apache.shiro.web.filter.authz.PermissionsAuthorizationFilterportorg.apache.shiro.web.filter.authz.PortFilterrestorg.apache.shiro.web.filter.authz.HttpMethodPermissionFilterrolesorg.apache.shiro.web.filter.authz.RolesAuthorizationFiltersslorg.apache.shiro.web.filter.authz.SslFilteruserorg.apache.shiro.web.filter.authc.UserFilter
上面的东西是百度的。例如
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager" />
<property name="loginUrl" value="/login/login.htm" />
<property name="successUrl" value="/index/index.htm" />
<property name="unauthorizedUrl" value="/index/index.htm" />
<property name="filters">
<map>
<entry key="authc">
<bean class="com.zhihai.shirorealm.ShiroAccess" />
</entry>
</map>
</property>
<property name="filterChainDefinitions">
<value>
/ = anon
/www.htm=anon
/register/** = anon
/login/** = anon
/index/** = authc
/analysis/** = authc
</value>
</property>
</bean>
那个filterChainDefinitions后面对应的链接后面的anon还是authc都是去filters中对应的key中去找,找不到就是默认的,我们相关的权限是authc,所以我们filters中要有这个key,我们要修改返回值就要修改authc对应的默认类org.apache.shiro.web.filter.authc.FormAuthenticationFilter,我们需要重写这个类,ShiroAccess就是对这个类的重写。
我们要写返回值我们需要重写该类的
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception
我们对该方法的重写如下:
@Override
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 {
if(isAjax(request)){
Map<String,Object> result=new HashMap<String,Object>();
result.put("isLogin",false);
response.getWriter().print(JsonUtils.Bean2Json(result));
}else{
this.saveRequestAndRedirectToLogin(request, response);
}
return false;
}
}
public static boolean isAjax(ServletRequest request){
String header = ((HttpServletRequest) request).getHeader("X-Requested-With");
if("XMLHttpRequest".equalsIgnoreCase(header)){
System.out.println( "当前请求为Ajax请求");
return Boolean.TRUE;
}
System.out.println( "当前请求非Ajax请求");
return Boolean.FALSE;
}
这样就可以搞定了。还需努力。
- shiro修改没有登录或者session失效,根据ajax返回json
- shiro修改没有登录或者session失效,根据ajax返回json
- Shiro Ajax请求没有权限返回JSON,没有登录返回JSON
- Shiro Ajax请求没有权限返回JSON,没有登录返回JSON
- 判断session失效后返回登录页面
- shiro拦截AJAX的返回json字符串
- Ajax&Json - 异步请求遇到session失效
- 关于shiro中 ajax请求登录失效的处理
- php+jquery+ajax+json没有数据返回
- session失效后框架体系中不能返回登录页面
- 拦截器处理session失效返回登录页面
- ajax根据ID查询数据库并返回Json格式数据返回js,使用append显示到页面。判断json值为[]或者[[]]的问题。
- session失效之后重新登录,点击失效之前的菜单依旧返回登录页面
- session失效之后重新登录,点击失效之前的菜单依旧返回登录页面
- 拦截器针对ajax Session失效跳转到登录页面
- ajax Session失效如何跳转到登录页面
- AJAX请求遭遇未登录和Session失效的解决方案
- Ajax Session失效跳转登录页面的方法
- 初探Architecture Components之Room
- LINUX常用命令
- [sicily] 1001. 会议安排
- 【面试总结】【远光软件】【java开发工程师】
- Windows安装TensorFlow详细教程
- shiro修改没有登录或者session失效,根据ajax返回json
- shiro身份验证
- 剑指Offer(第2版) 面试题3、面试题4,Java实现
- Git与SVN区别-6.19
- linux基础入门之rm命令
- Hession使用
- 高斯分布微分熵的推导
- Spring的AOP实现方式—ProxyFactoryBean配置方式实现源码剖析
- java集合源码解读系列