登录后跳转进入登录前的网址

优化系统的时候拿到网址,登录进去只能看到首页,之前的网址还要再输一遍,比较费事。
所以选择用Memcached+Cookie来存取登录前的网址。
1.为每个用户输入的网址设置一个唯一的Token,存入Request的Cookie中。作为Memchched中的key。
(1)//通过loginTokenName取出Cookie中的TokenStr。
String tokenStr = ServletUtil.getCookieValue(request,LoginConstants.loginTokenName);
//检查Token是否为空,格式是否符合,若不是,则重新设置Token。
if(!Token.checkToken(tokenStr)){
Token token = Token.getToken(request);
tokenStr = token.toCookieString();//通过requeat中的mac ;System.currentTimeMillis() ;PID;clientIp;构建Token.
ServletUtil.addCookie(response,LoginConstants.loginTokenName, tokenStr, LoginConstants.cookieTime);
//LoginConstants.loginTokenName作为key,tokenStr作为value。存入request中。
//key = LoginConstants.loginTokenName+tokenStr;
}
(2)重定向到 toLogin
String callBackUrl = request.getRequestURI().toString();
callBackUrl += getReqParaPairToStr(request);//传参URL中的参数
callBackUrl = URLEncoder.encode(callBackUrl,"utf-8");//编码
response.sendRedirect("/back/userlogin/toLogin.do?callBackUrl="+callBackUrl);
(3) //实现页面跳转到登录方法:
public String toLogin(String callBackUrl){
//保存callBackUrl路径到Memcached中
MemcachedUtil.setObject(LoginUtil.getLoginCallBackURLKey(request),callBackUrl, LoginConstants.callBackUrlTime);
return "back/login";
}
(4)//在登录时候取出Url
String callBackUrl= (String)MemcachedUtil.getObject(LoginUtil.getLoginCallBackURLKey(request));
String LoadUrl;
if(callBackUrl==null){
LoadUrl = ConfigConstants.backFirstPage;
}else{
callBackUrl=callBackUrl.replace(':', '=');
callBackUrl=callBackUrl.replace(',', '&');
LoadUrl = callBackUrl;
}
return "redirect:"+LoadUrl;
突然发现这样做很麻烦,数据不好取,可能我还没看到他的好处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值