- 浏览: 7878594 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
在spring security 3中,对于某些需要保护的url,可以很容易地实现当没权限的时候,
redirect到一个页面(比如自定义的404.jsp页面)进行显示没权限的信息;
但有的时候,必须要对一些AJAX的请求url也同时判断其是否有权限输出;
如果没权限的话,一般要以JSON的方式返回给用户端,比如弹出一个提示框,显示没权限;
在SPRING security 3中,当没权限的时候,会由spring security 自己的拦截器
AccessDeniedHandler 进行拦截的,因此,可以在这个地方进行扩展自定义,
然后统一返回给前端的都是json的方式,并且在前端的jquery js中,扩展jquery post的
方法,如果对json返回的结果中,有相关“没权限操作”的信息,则弹出错误提示框,
这样,只需要在要用到$ajax提交的页面中,引入js就可以了,下面看代码实现。
1) 首先,实现AccessDeniedHandler 类;
在上面的处理中,判断如果是ajax处理,则输出json字符串给客户端,否则就
redirect到指定的accessDeniedUrl,
2) 在applicationContext-security.xml中进行设置,如下:
3) springsecurity.js
redirect到一个页面(比如自定义的404.jsp页面)进行显示没权限的信息;
但有的时候,必须要对一些AJAX的请求url也同时判断其是否有权限输出;
如果没权限的话,一般要以JSON的方式返回给用户端,比如弹出一个提示框,显示没权限;
在SPRING security 3中,当没权限的时候,会由spring security 自己的拦截器
AccessDeniedHandler 进行拦截的,因此,可以在这个地方进行扩展自定义,
然后统一返回给前端的都是json的方式,并且在前端的jquery js中,扩展jquery post的
方法,如果对json返回的结果中,有相关“没权限操作”的信息,则弹出错误提示框,
这样,只需要在要用到$ajax提交的页面中,引入js就可以了,下面看代码实现。
1) 首先,实现AccessDeniedHandler 类;
public class MyAccessDeniedHandlerImpl implements AccessDeniedHandler { public MyAccessDeniedHandlerImpl() { } public String getAccessDeniedUrl() { return accessDeniedUrl; } public void setAccessDeniedUrl(String accessDeniedUrl) { this.accessDeniedUrl = accessDeniedUrl; } public MyAccessDeniedHandlerImpl(String accessDeniedUrl) { this.accessDeniedUrl=accessDeniedUrl; } private String accessDeniedUrl; @Override public void handle(HttpServletRequest req, HttpServletResponse resp, AccessDeniedException reason) throws ServletException, IOException { boolean isAjax = "XMLHttpRequest".equals(req.getHeader("X-Requested-With")); //如果是ajax请求 if (isAjax) { String jsonObject = "{\"message\":\"You are not privileged to request this resource.\","+ // "\"access-denied\":true,\"cause\":\"AUTHORIZATION_FAILURE\"}"; String contentType = "application/json"; resp.setContentType(contentType); String jsonObject="noright"; PrintWriter out = resp.getWriter(); out.print(jsonObject); out.flush(); out.close(); return; } else { String path = req.getContextPath(); String basePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path+"/"; resp.sendRedirect(basePath+accessDeniedUrl); } }
在上面的处理中,判断如果是ajax处理,则输出json字符串给客户端,否则就
redirect到指定的accessDeniedUrl,
2) 在applicationContext-security.xml中进行设置,如下:
<http auto-config="true"> <intercept-url pattern="/admin*" access="ROLE_ADMIN" /> <access-denied-handler ref="accessDeniedHandler"/> </http> <beans:bean id="accessDeniedHandler" class="com.test.MyAccessDeniedHandlerImpl"> <beans:property name="accessDeniedUrl" value="403.jsp" /> </beans:bean>
3) springsecurity.js
(function($){ // 保存原有的jquery ajax; var $_ajax = $.ajax; $.ajax = function(options){ var originalSuccess, mySuccess, success_context; if (options.success) { // save reference to original success callback originalSuccess = options.success; success_context = options.context ? options.context : $; // 自定义callback mySuccess = function(data) { if (data['access-denied']) { if (data.cause==='AUTHENTICATION_FAILURE') { alert('登录超时,请重新登录.'); window.location.href = contextPath + '/'; } else if (data.cause==='AUTHORIZATION_FAILURE') { if (data=="noright") { alert('对不起,你没有访问该资源的权限.'); } } return; // call original success callback originalSuccess.apply(success_context, arguments); }; // override success callback with custom implementation options.success = mySuccess; } // call original ajax function with modified arguments $_ajax.apply($, arguments); }; })(jQuery);
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1508方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 1985前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3429info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2200import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 462https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 648public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 572https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 637https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 411https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 4771 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3059微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 577https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1798什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 929本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1298原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 827public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 637在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 900-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 729一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1871介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
主要介绍了SpringBoot+SpringSecurity处理Ajax登录请求问题,本文给大家介绍的非常不错,具有参考借鉴价值,需要的朋友可以参考下
spring security3案例,基于数据库存储角色权限资源信息,支持记住我、session并发控制、AJAX调用。
我自己做的spring3+struts2+hibernate3+dwr3+spring security3+ajax请求+数据库配置权限 完整实例
spring security 安全认证与资源管理,,安全性特别高,,可以配置更多的安全设置。在许多企业应用中,都选用了这项技术。该代码主要将ajax请求与from请求区别。供大家参考!
3. Spring Security 4.2的新特性 27 3.1 Web改进 27 3.2配置改进 28 3.3杂项 28 4.样品和指南(从这里开始) 28 5. Java配置 29 5.1 Hello Web安全Java配置 29 5.1.1 AbstractSecurityWebApplicationInitializer 31 ...
Architect solutions that leverage the full power of Spring Security while remaining loosely coupled. Implement various scenarios such as supporting existing user stores, user sign up, authentication, ...
更改了RedirectUtils类的 response.sendRedirect(response.encodeRedirectURL(finalUrl)); 改为了 StringBuffer str = new StringBuffer(); str.append("{"); str.append("status: \"true\",");...
1. 后台架构:SpringMVC 5.1.5、Spring 5.1.5、SpringSecurity 5.1.4、Hibernate 5.3.7 2. 前端架构:Bootstrap,兼容JQuery,AJAX 3. 页面设计:SmartAdmin,AJAX + 对话框操作风格,可换6种页面风格和颜色 4. ...
主要介绍了Ajax登陆使用Spring Security缓存跳转到登陆前的链接,需要的朋友可以参考下
Springboot+SSM+security
ajax调用java实例源码一、简介 自 2010 年以来,出现了许多丰富的 JavaScript 框架,允许开发人员通过 Web 提供接近桌面质量的用户体验。 Web 应用程序的传统 HTTP 请求-响应流正逐渐被 AJAX 流取代。 随着诸如 ...
主要介绍了Spring Security基于json登录实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
前后端分离项目,Spring boot作为后端,vue框架实现前端,后端整合swagger3测试工具,jwt实现验证码生成,awt生成图形验证码,整合邮箱验证,使用mybatis-generator自动生成实体类以及mapper,设置有拦截器验证登录...
3. Spring框架: - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring Cloud 4. Web开发: - HTML、CSS、JavaScript - HTTP协议 - Servlet、JSP - AJAX、JSON、XML 5. 框架和工具...
计算机类毕业设计、课程作业,系统源码!!!
使用Thymeleaf,Ajax,Spring Security等 包括 用于Servlet 3.0环境的No-xml Spring MVC 4 Web应用程序 胸腺,引导 JPA 2.0(Hibernate / HSQLDB / Spring Data JPA) JUnit的/ Mockito的 Spring安全4.0 安装 要将...
16.5 Spring中带有DWR的支持Ajax的应用程序 16.5.1 直接Web远程控制 16.5.2 访问Spring管理的Bean DWR 16.6 小结 附录A 装配Spring A.1 下载Spring A.1.1 研究Spring发布 A.1.2 构建自己的类路径 A.2 把...
16.5 Spring中带有DWR的支持Ajax的应用程序 16.5.1 直接Web远程控制 16.5.2 访问Spring管理的Bean DWR 16.6 小结 附录A 装配Spring A.1 下载Spring A.1.1 研究Spring发布 A.1.2 构建自己的类路径 A.2 把...
spring boot 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、rabbitmq、activemq、elasticsearch、security、shiro等 #### Spring Boot 版本 - 2.0.3.RELEASE #### 模块...