首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

[Spring Security] 研究了一上Spring Security如何避免 Redirect after Login

2012-11-12 
[Spring Security] 研究了一下Spring Security如何处理 Redirect after Login为了用户体验,在Login之后应

[Spring Security] 研究了一下Spring Security如何处理 Redirect after Login
为了用户体验,在Login之后应该自动跳到Login之前的页面

Spring Security作为最成熟的WEB安全框架,它是如何处理这个问题的呢?
我研究了一下代码,其机制大概如下:

  1.基本步骤
    a.某个未登录的用户执行某个操作
    b.Spring Security发现它未登录,于是把当前的请求信息(包括URL,参数,POST/GET)存入SESSION
    c.然后302到登录页面
    d.用户登录
    e.Spring Security 发现用户名密码无误,准备执行登录前的请求
    f.Spring Security从session中取出上次存入的请求信息,然后发送redirect即可

  2.如果上一次请求是POST怎么办? 看代码发现,Spring Security仍然只redirect一个不带参数的URL。但这样的话岂不是导致参数丢失?  不会。因为下一个处理者会从session里面去拿参数。当然下一个处理者不用显式地去访问HttpSession,它仍然只调用 request.getParameter(),只不过这里的request已经被Spring Security封装成为一个特殊的request,这个request覆盖了原始的getParameter()方法。在覆盖的方法中,它会去session里面找参数。
   

热点排行