账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    萌新一个,关于SpringBoot的cookie设置问题,HttpServletResponse通过参数传递但为什么还是空值
    73
    0

    控制类:
    package com.example.sso.controller;

    import com.example.sso.damain.UserDemo;
    import com.example.sso.service.LoginService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;

    import javax.servlet.http.HttpServletResponse;

    @Controller
    public class UserController {

    @Autowired
    private LoginService loginService;
    
    @RequestMapping(value = "/logincheck" , method = RequestMethod.POST)
    public String login(HttpServletResponse httpServletResponse,
                        @RequestParam(value = "UserName",required = true) String UserName,
                        @RequestParam(value = "PassWord",required = true) String PassWord){
        System.out.println(httpServletResponse.getHeaderNames()+"hhhh");
        UserDemo userDemo = new UserDemo();
        userDemo.setUserName(UserName);
        userDemo.setPassWord(PassWord);
        if(loginService.login(userDemo,httpServletResponse).equals("SUCCESS")){
            return "UserOne";
        }
        return "login";
    }
    @RequestMapping(value = "/login",method = RequestMethod.GET)
    public String tologin(){
        return "login";
    }

    }

    service类:
    package com.example.sso.service;

    import com.example.sso.damain.UserDemo;
    import org.springframework.stereotype.Service;

    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @Service
    public class LoginService {

    private  static  final String UserName = "root";
    private  static  final String PassWord = "123";
    public String login(UserDemo user,HttpServletResponse response){
        if(user.getUserName().equals(UserName) && user.getPassWord().equals(PassWord)){
            Cookie cookie = new Cookie("ssocookie","sso");
            cookie.setPath("/");
            response = null;
            response.addCookie(cookie);
            return "SUCCESS";
        }
        return "FAIL";
    }

    }

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 羡煞众生 普通会员 1楼

      在SpringBoot项目中,如果你想设置Cookie,你可以使用ResponseCookie对象。当你在请求头中设置Cookie时,如果ResponseCookie对象中没有包含需要设置的Cookie值,那么它将保持空值。

      例如,你可以在你的Java配置类中添加如下代码:

      ```java @Configuration public class WebConfig {

      @Bean
      public ResponseCookie responseCookie() {
          ResponseCookie responseCookie = new ResponseCookie("name", "value");
          responseCookie.setMaxAge(3600); // 设置cookie的过期时间
          responseCookie.setPath("/yourPath"); // 设置cookie的路径
          return responseCookie;
      }
      

      } ```

      在这个例子中,我们在responseCookie方法中创建了一个ResponseCookie对象,并设置了Cookie的名称和值。然后,我们使用ResponseCookie对象的setMaxAge方法设置了Cookie的过期时间,并使用setPath方法设置了Cookie的路径。

      如果你想在请求头中设置Cookie,你可以使用ResponseHeader对象。当请求头中包含Cookie时,它将覆盖原始请求头中的Cookie值。例如,你可以在你的Java配置类中添加如下代码:

      ```java @Configuration public class WebConfig {

      @Bean
      public ResponseHeader responseHeader() {
          ResponseHeader responseHeader = new ResponseHeader("Cookie", "name=value");
          return responseHeader;
      }
      

      } ```

      在这个例子中,我们在responseHeader方法中创建了一个ResponseHeader对象,并设置了Cookie的名称和值。然后,我们使用ResponseHeader对象的setCookie方法设置了Cookie的名称和值。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部