静安广州网站建设北京seo薪资
使用了统一认证,然后每次登录,不能定向到用户指定的界面,非得回到首页,所以做了如下改动
1、在FormAuthenticationFilter中在issueSuccessRedirect中加上五句话。
@Overrideprotected void issueSuccessRedirect(ServletRequest request,ServletResponse response) throws Exception {Principal p = UserUtils.getPrincipal();if (p != null && !p.isMobileLogin()){String url = "";if(WebUtils.getSavedRequest(request).getRequestUrl()!=null){url = WebUtils.getSavedRequest(request).getRequestUrl(); }else{url = getSuccessUrl();}//getSuccessUrl()WebUtils.issueRedirect(request, response, url, null, true);}else{//super.issueSuccessRedirect(request, response);//手机登录AjaxJson j = new AjaxJson();j.setSuccess(true);j.setMsg("登录成功!");j.put("username", p.getLoginName());j.put("name", p.getName());j.put("mobileLogin", p.isMobileLogin());j.put("JSESSIONID", p.getSessionid());PrintJSON.write((HttpServletResponse)response, j.getJsonStr());}}
其中主要是用到了
String url = "";
if(WebUtils.getSavedRequest(request).getRequestUrl()!=null){url = WebUtils.getSavedRequest(request).getRequestUrl();
}else{url = getSuccessUrl();
}
到WebUtils.getSavedRequest(request).getRequestUrl(); 里面看看是否有存好的重定向url,否则采用默认的home也就是getSuccessUrl()
WebUtils是spring自带的工具类,它会自己存好访问的url。没太仔细研究怎么弄的,管用就好了。
其实在controll里的httpservletrequest类型的request变量里能找到url。但是他是包在UTIConverter中,层层转包,往外取很麻烦,关键是层层转包的类型转化不太会弄。使用上面那个简单多了。