shiro 配置cookie ,写入cookie和读取cookie
在shiro.xml配置文件中,添加如下代码
<!--添加记住我功能--> <!-- rememberMeCookie asplover begin--> <!-- 声明cookie对象--> <bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie"> <constructor-arg value="rememberMe"/> <property name="httpOnly" value="true"/> <property name="maxAge" value="2592000"/> <!-- 30天 --> <!-- <property name="domain" value="sqfcw.net"/>--> </bean> <!-- rememberMe管理器 --> <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager"> <property name="cookie" ref="rememberMeCookie"/> </bean> <!-- rememberMeCookie asplover end-->
写入cookie
@RequestMapping(value = "/login") public String Login(String username, String password, HttpSession session, HttpServletRequest request, HttpServletResponse response, Model model){ if(username==null){ model.addAttribute("message", "账号不为空"); return "login"; } //主体,当前状态为没有认证的状态“未认证” Subject subject = SecurityUtils.getSubject(); // 登录后存放进shiro token UsernamePasswordToken token=new UsernamePasswordToken(username,password); //测试添加记住我 token.setRememberMe(true); User user; //类级变量,check()方法会用 //登录方法(认证是否通过) //使用subject调用securityManager,安全管理器调用Realm try { //利用异常操作 //需要开始调用到Realm中 System.out.println("========================================"); System.out.println("1、进入认证方法"); subject.login(token); user = (User)subject.getPrincipal(); session.setAttribute("user",subject); model.addAttribute("message", "messagee值为登录完成"); //cookie的学习开始---------- begin SimpleCookie simpleCookie = new SimpleCookie(); simpleCookie.setName("lang"); simpleCookie.setValue("lang of value"); simpleCookie.setName("userAccount"); simpleCookie.setValue(user.getAccount()); Cookie cookie = simpleCookie; //"lang",lang cookie.setComment("lang type"); cookie.setMaxAge(360*24*60*60);//最大时间 cookie.saveTo(request,response); System.out.println("登录完成"); } catch (UnknownAccountException e) { model.addAttribute("message", "账号密码不正确"); return "index"; } return "test"; }
读取cookie
@RequestMapping("/check") public String check(HttpSession session,HttpServletRequest request){ //判断session Subject subject=(Subject)session.getAttribute("user"); //取得cookie // Cookie[] cookies = request.getCookies(); javax.servlet.http.Cookie[] cookies = request.getCookies(); System.out.println("cookies取得值"+cookies); System.out.println("cookies取得值"+cookies[0].getValue()); for ( javax.servlet.http.Cookie cookie:cookies ) { System.out.println("从浏览器获取"+cookie.getName()+"的值:"+cookie.getValue()); } }
做产品的程序,才是好的程序员!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!