- 浏览: 7943476 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 1579方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 2019前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3470info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2236import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 490https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 691public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 611https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 671https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 438https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 5441 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3101微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 617https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1844什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 967本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1363原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 863public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 674在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 940-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 772一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1907介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 知识点1:SpringBoot+SpringSecurity框架简介 ...
在这个主题“spring security ajax请求与html共存”中,我们将探讨如何在使用Spring Security的同时处理Ajax(异步JavaScript和XML)请求,并确保与HTML页面的正常交互。 1. **Spring Security基础** Spring ...
在提供的压缩包文件"springsecurity_database"中,可能包含了示例代码、配置文件和其他相关资源,可以帮助你理解和实现上述功能。在实际项目中,你需要根据自己的需求调整和扩展这些示例,以构建一个符合业务场景的...
这是一个基于Java技术栈的Web应用实例,整合了Spring 3、Struts 2、Hibernate 3、Direct Web Remoting (DWR) 3、以及Spring Security 3,并且利用Ajax进行异步通信,实现了数据库配置的权限管理。下面将详细阐述这些...
3. **过滤器链(Filter Chain)**:Spring Security 使用一系列过滤器处理请求,如 `SecurityContextPersistenceFilter` 保存和恢复安全上下文,`UsernamePasswordAuthenticationFilter` 处理登录请求。理解过滤器链...
6. **CSRF防护**:为防止跨站请求伪造(Cross-Site Request Forgery)攻击,Spring Security提供了内置的CSRF保护,可以通过添加特定的token到表单或Ajax请求中来验证请求的合法性。 7. **AOP(面向切面编程)**:...
在本“springsecurity前端素材”中,我们有两个主要的文件夹:templates和static,它们分别代表了前端展示层的不同方面。 **templates** 文件夹通常包含了应用的HTML模板文件,这些文件被用于构建用户界面。在...
在本项目中,"SpringBoot项目+SpringSecurity+前端静态资源"是一个综合性的开发实践,主要涉及了Spring Boot和Spring Security这两个核心的Java框架,以及前端的静态资源管理。Spring Boot简化了Java应用的初始化和...
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 ...
- **登录页面中的参数配置:** 设置登录页面的请求参数,确保Spring Security能够正确处理这些参数。 - **测试一下:** 测试自定义登录页面的功能是否正常。 - **第5章:使用数据库管理资源** - **数据库表结构...
### Spring Security3技术手册知识点概览 #### 一、基础篇 **1. 一个简单的Hello World** - **1.1 配置过滤器** - Spring Security通过一系列的过滤器来实现对Web应用程序的安全控制。了解如何配置这些过滤器是...
本篇文章将深入探讨“spring3mvc+hibernate4+spring-security3+dwr3整合架包”中的核心技术和概念,帮助开发者理解如何利用这些组件来创建强大的Java Web应用。 首先,Spring MVC(Model-View-Controller)是Spring...
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\",");...
spring security form表单,基于ajax请求,用于前后端分离,包含多登出方式
同时,它还结合了Spring MVC(Spring Framework的模块,简称SSM中的S)、Spring Security以及MySQL数据库,以实现全面的后端功能和数据管理。 【描述】"Springboot+SSM+security"这部分描述了项目的三个主要技术栈...
Struts2、Spring、iBatis和jQuery AJAX是Java Web开发中的四大核心技术,它们共同构建了一个功能强大的MVC(模型-视图-控制器)架构。本文将深入探讨这些技术在登录注册系统中的应用。 首先,Struts2是Apache基金会...
关于使用Ajax进行登录并使用Spring Security缓存跳转回登录前的URL的实现方法,主要涉及的IT知识点如下: 1. **Ajax的定义与作用** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下...
Spring Security是Spring生态系统中的安全模块,提供了一套完整的身份验证和授权解决方案,包括登录、权限控制等功能。 在前后端分离的架构下,Spring Boot作为后端服务器,主要负责处理业务逻辑和数据操作。通过...
本项目是一个基于SSM(Spring、SpringMVC、MyBatis)框架的循环水能效管理系统,采用现代前端技术如Bootstrap、JSP、Ajax以及数据交换格式JSON,同时结合SpringSecurity进行安全控制。这个系统主要适用于高校计算机...