springboot&ftl获取cookie失败的问题

1 篇文章 0 订阅
0 篇文章 0 订阅

         最近公司使用springboot开发新项目,使用ftl作为模板,好家伙刚跳槽就有新项目,然后连续加班两星期,感觉就在猝死的路上了.......整体功能基本完成了,加个登录!为了增加用户体验肯定要来个remember了啦!老规矩后台写起来,cookie保存!前台ftl 获取cookie。

<#assign cookies = request.getCookies()>
<#list cookies as cookie>
    <#if cookie.name = "username">
        $("#username").val(${cookie.value});
        console.log(${cookie.value});
    </#if>
    <#if cookie.name = "password">
        $("#password").val(${cookie.value});
    </#if>
</#list>
百度了一下,ftl比较好的地方就是js中也可以使用标签哦!start运行一波!麻了法克!

FTL stack trace ("~" means nesting-related):
- Failed at: #assign cookies = request.getCookies()  [in template "login.ftl" at line 129, column 9]

<#assign cookies = request.getCookies()>
这行报错,瞬间慌了!百度上都说ftl获得cookie是通过这个方法的啊,最tmd无语的是,明明有人提出了这个问题,但是还有DB回复这个解决方法!智障嘛(⊙_⊙)?

@CookieValue(value="username" ,defaultValue = "1") String username
然后就是有人提出需要从服务端request中获得cookie然后返回给ftl,so我就找到这个springmvc获得cookie(@CookieValue),同时我在后台添加了通过request获得cookie的处理

//cookie 获得usernamepassword
Cookie[] cookies = request.getCookies();
if(null!=cookies){
    for(Cookie cookie : cookies){
        System.out.println("name:"+cookie.getName()+",value:"+ cookie.getValue());
        if(cookie.getName().equals(user_username)){
            modelAndView.addObject(user_username, cookie.getValue());
        }
        if(cookie.getName().equals(user_pwd)){
            modelAndView.addObject(user_pwd, cookie.getValue());
        }
    }
}
以及

@CookieValue(value="username" ,defaultValue = "1") String username,
@CookieValue(value="pwd" ,defaultValue = "2") String password,
不过很遗憾,2种方式都没有获得我想要的值!@CookieValue就不做解释了,自己百度!既然没有,那就看看浏览器cookie中是否有对应信息

cookie中用户的相关信息也是有的,可就是获取不到,没办法那就

var cookies= document.cookie;

原生获取cookie的方法,但是还是获取失败!那就翻墙谷歌找找解决方法啊!

然后搜到个是搞单点登录的,但是他纪录cookie的几个参数让我眼前一亮,

 我的浏览器查看cookie时,里面的路径是"/userInfo",这是因为我的cookie保存时在路径"/userInfo/login“,而我的登录路径是"/","/index",难道是因为我没有设定可见路径,导致默认cookie中的值可见路径是"/userInfo",然后我就查看后台从cookie中唯一获得的值JSESSIONID的路径,果不其然,貌似发现问题

对比下,发现问题了!可见路径!

//保存Cookie
Cookie ckUserName = new Cookie(user_username, userInfo.getUsername());
ckUserName.setMaxAge(60 * 60 * 24 * 99999999);   //设置Cookie保存
ckUserName.setPath("/");
response.addCookie(ckUserName);
Cookie ckPswd = new Cookie(user_pwd, userInfo.getPassword());
ckPswd.setMaxAge(60 * 60 * 24 * 99999999);
ckPswd.setPath("/");
response.addCookie(ckPswd);
添加path设定!清空cookie,重启!


controller成功获得cookie信息!

最后总结就是:麻痹了,平时用习惯了cookie,只设定值跟时间,没有关注过路径的问题!踩坑!

至于开篇提到的<#assign cookies = request.getCookies()>获取cookie的方法,试了下还是不可以!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值