• 使用HttpSession获取用户信息


    package com.itheima.controller;
    
    import java.util.Enumeration;
    
    import javax.servlet.http.HttpSession;
    
    import org.springframework.security.core.Authentication;
    import org.springframework.security.core.context.SecurityContextImpl;
    import org.springframework.security.core.userdetails.UserDetails;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class FilmeController {
    
        // 影片详情页
        @GetMapping("/detail/{type}/{path}")
        public String toDetail(@PathVariable("type") String type, @PathVariable("path") String path) {
            return "detail/" + type + "/" + path;
        }
    
        // 向用户登录页面跳转
        @GetMapping("/userLogin")
        public String toLoginPage() {
            return "login/login";
        }
    
        /**
         * 通过传统的HttpSession获取Security控制的登录用户信息
         * 
         * @param session
         */
        @GetMapping("/getuserBySession")
        @ResponseBody
        public void getUser(HttpSession session) {
            // 从当前HttpSession获取绑定到此会话的所有对象的名称
            Enumeration<String> names = session.getAttributeNames();
            while (names.hasMoreElements()) {
                // 获取HttpSession中会话名称
                String element = names.nextElement();
                // 获取HttpSession中的应用上下文
                SecurityContextImpl attribute = (SecurityContextImpl) session.getAttribute(element);
                System.out.println("element: " + element);
                System.out.println("attribute: " + attribute);
                // 获取用户相关信息
                Authentication authentication = attribute.getAuthentication();
                UserDetails principal = (UserDetails) authentication.getPrincipal();
                System.out.println(principal);
                System.out.println("username: " + principal.getUsername());
            }
        }
    }

  • 相关阅读:
    Flask request接口获取参数
    python踩坑系列之导入包时下划红线及报错“No module named”问题
    报表测试方法与注意事项
    如何查看队列被某个应用消费
    Jinkins自动构建
    Python3字典排序
    【Win10】【译】提交 UWP 应用时遇到意料之外的语言?
    【Win10】探索 Windows 10 10586 之 JumpList(跳转列表)
    【Win10】页面导航的实现
    【Win10】使用 ValidationAttribute 实现数据验证
  • 原文地址:https://www.cnblogs.com/tszr/p/15915496.html
Copyright © 2020-2023  润新知