`
jobar
  • 浏览: 346901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何利用Spring的redirectStrategy进行url hash tag的重定向

 
阅读更多
我们都知道url的hash部分是不能传到服务器端的,例如 http://projectname/#M_FACTORY:ci,其中url里面的“#M_FACTORY:ci”是hash部分,在前台可以用location.hash取得,在传到后台的时候这部分是被忽略掉的。如果我们想实现登录后自动跳转到这个url,普通的重定向是没法实现的。

1. 配置Spring登录成功的重定向策略
主意这里不能使用always-use-default-target="true",不然无法重定向
<security:http>
<security:form-login login-page="/login.action" default-target-url="/index.html" authentication-success-handler-ref="successHandler"
			authentication-failure-url="/loginfailed.action" />
</security:http>

2. 配置targetUrlParameter参数和重定向策略
如果这个参数设置后,当前的请求会对含有这个参数名的URL进行检查,然后将其对应的值作为转向的目标url
<bean id="successHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
		<property name="targetUrlParameter" value="redirect"></property>
		<property name="redirectStrategy">
			<bean class="xxx.MyRedirectStrategy"></bean>
		</property>
	</bean>

3. 自定义重定向策略
public class MyRedirectStrategy extends DefaultRedirectStrategy {
    @Override
    public void sendRedirect(final HttpServletRequest request, final HttpServletResponse response, final String url)
            throws IOException {
        if (url != null && !url.startsWith("/") && !url.startsWith("http://")) {
            final String redirectUrl = request.getContextPath() + "/index.html#" + url;
            response.sendRedirect(redirectUrl);
        } else {
            super.sendRedirect(request, response, url);
        }
    }
}

4. UI端做响应的处理
<form name='f' action='j_spring_security_check' method="post" onsubmit="return setSubmitUrl(this);">
	function setSubmitUrl(form){
		var action = form.action;
		var hash = location.hash;
		if(hash){
			hash = hash.substring(1);
			action += "?redirect=" + hash;
		}
		form.action = action;
		return true;
	}

这里将hash值转换为参数就可以传送到后台,登录成功可以在改写成跳转到的hash url,这样就实现了用户的需求,达到了我们的目标。

注意这里的“redirect要与spring配置文件里面的targetUrlParameter参数值要一致
分享到:
评论

相关推荐

    Nginx安装url_hash插件.doc

    **Nginx与url_hash插件** Nginx是一个高性能的HTTP和反向代理服务器,以其轻量级、高并发处理能力以及丰富的模块扩展性而闻名。然而,Nginx本身并不内置支持url_hash功能,这是一个用于负载均衡的策略,通过将特定...

    Nginx如何配置url_hash转发方式.docx

    在本文中,我们将深入探讨如何在Nginx服务器上配置URL哈希(url_hash)转发方式,这是一种负载均衡策略,用于将特定的URL请求路由到特定的后端服务器。这种配置适用于需要根据URL保持会话状态的应用场景,比如动态...

    图片服务器的url hash架构.docx

    URL Hash架构通过将URL映射到特定的服务器,不仅实现了负载均衡,还有效提升了系统的稳定性和缓存利用率。根据不同应用场景选择合适的Hash架构,可以极大地提高图片服务器的整体性能和用户体验。在未来,随着技术的...

    UrlHash/锚点

    使用《UrlHash/锚点》解决移动设备中的单页面应用的物理[返回键]带来的困扰 示例代码

    url-hash:为防篡改 url 添加哈希参数的节点库

    基本用法将哈希添加到 url // require libraryvar urlHash = require ( 'url-hash' ) ;var url = 'http://www.example.com/page?id=4' ;// add hash to urlvar newUrl = urlHash . create ( url ) ;验证网址 // ...

    HASHIN.rar_ABAQUS_Hashin失效准则 abaqus_abaqus hashin_abaqus 三维Hashi

    标题中的"HASHIN.rar_ABAQUS_Hashin失效准则 abaqus_abaqus hashin_abaqus 三维Hashi"表明这是一个关于ABAQUS软件中应用Hashin失效准则进行三维分析的示例或教程。ABAQUS是一款广泛应用的有限元分析软件,尤其在结构...

    Hash函数与消息认证

    hash函数与消息认证讲义 包括 5.1 Hash函数概述 5.1.1 Hash函数定义 5.1.2 Hash函数的安全性 5.1.3 Hash函数的迭代构造法 5.2 Hash函数MD5 5.2.1 MD5算法 5.2.2 MD5的安全性 5.3 安全Hash算法SHA-1 5.3.1 SHA-1...

    hashin-strain-3d_hashin_三维hashin_三维hashin失效_失效准则_3D—Hashin_

    **三维Hashin失效准则详解** 在复合材料领域,失效分析是至关...在实际工程问题中,利用三维Hashin准则进行失效模拟,可以有效预测材料的承载能力和可能的失效模式,为复合材料的设计和安全性评估提供强有力的支持。

    3d.zip_3维hashin准则_Hashin 3D_hashin_失效准则_层合板 hashin

    6. **计算方法**:在实际应用中,3D Hashin准则通常与有限元分析结合,通过对材料的微结构进行模拟,计算每个单元的失效状态,并确定整个结构的整体失效。 7. **应用范围**:3D Hashin准则广泛应用于航空航天、汽车...

    uthash开源的hash函数实现

    UTHASH 是一个开源的 C 语言库,提供了一种简单且高效的哈希表实现,用于在 C 代码中快速查找和管理数据结构。...通过实际操作和学习,你可以更好地掌握如何在自己的项目中有效地利用 UTHASH 来管理数据。

    UMAT_Hashin3D_hashin

    标题 "UMAT_Hashin3D_hashin" 指涉的是一个专门针对复合材料损伤分析的三维子程序,该程序基于Hashin破坏准则。在有限元分析(FEA)中,用户自定义材料(User-Defined Material,UMAT)是实现特定材料行为建模的一种...

    初识 Spring Security - v1.1.pdf

    - **Spring Security 的 AOPAdvice 思想**:利用Spring AOP的思想来实现权限鉴定。 - **AbstractSecurityInterceptor**:是Spring Security提供的一个抽象类,实现了权限拦截的功能。 #### 四、Spring Security ...

    利用Hash技术统计C源程序中关键字的频度

    设Hash函数为:Hash(Key)=[(Key的首字母序号)*100+(Key的尾字母序号)] Mod 41。关键字39个,参考C语言教材。 二、数据结构设计 ①关键字表的存储结构;②Hash表中的结点结构。频度、冲突次数 三、功能设计 ①从一个...

    利用Hash技术统计C源程序中关键字

    利用Hash技术统计C源程序中关键字的频度:扫描一个C源程序,用Hash表存储该程序中出现的关键字,并统计该程序中的关键字出现的度。用线性探测法解决Hash冲突。设Hash函数为:Hash(Key)=[(Key的首字母序号)*100+(Key...

    react-hash:React自定义钩子以从URL获取哈希

    React自定义钩子以从URL获取哈希值。 目录 安装 npm: npm install react-hash 纱: yarn add react-hash 用法 import React from 'react' ; import { useHash } from 'react-hash' ; const App = ( ) =&gt; { ...

    nginx_upstream_hash-0.3.1.tar.gz

    为了实现更灵活的负载均衡策略,Nginx提供了一系列的upstream模块,其中,`nginx_upstream_hash`模块是其中的一种,用于根据请求的某些参数进行哈希计算,进而将请求定向到特定的后端服务器。本文将深入探讨`nginx_...

    Python实现短网址ShortUrl的Hash运算实例讲解

    以下要实现的是不用数据库支持就对原始URL进行shorturl hash。说到这里我们很容易想到MD5,固定长度,冲突概率小,但是32个字符,太长?我们以MD5为基础,将其字符缩短,同时要保证一定数量范围内hash不会冲突。 ...

    ssh项目添加spring Security

    SSH(Struts2 + Spring + Hibernate)是一个经典的Java Web开发框架,用于构建高效、模块化且可维护的企业级应用程序。在这个项目中,我们将探讨如何将Spring Security集成到SSH项目中,实现基于数据库验证的用户...

    HASH_hash_stm32hash_stm32hash表_stm32f407_

    3. **处理**:哈希处理器内部进行计算,根据所选算法更新哈希状态。 4. **完成**:当所有数据处理完毕后,获取最终的哈希值。 5. **验证**:将计算得到的哈希值与预期值比较,以确认数据的完整性。 在`HASH`文件中...

Global site tag (gtag.js) - Google Analytics