当前位置: 首页 > 面试题库 >

从Spring MVC控制器的安全上下文中获取UserDetails对象

许马鲁
2023-03-14
问题内容

我正在使用Spring Security 3和Spring MVC 3.05。

我想打印当前登录用户的用户名,如何在控制器中获取UserDetails?

@RequestMapping(value="/index.html", method=RequestMethod.GET)
    public ModelAndView indexView(){
         UserDetails user = ?
                mv.addObject("username", user.getUsername());
        ModelAndView mv = new ModelAndView("index");
        return mv;
    }

问题答案:

如果您已经确定用户已经登录(在您的示例中/index.html为受保护用户):

UserDetails userDetails =
 (UserDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();

要首先检查用户是否已登录,请检查当前用户Authentication不是AnonymousAuthenticationToken

Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (!(auth instanceof AnonymousAuthenticationToken)) {
        // userDetails = auth.getPrincipal()
}


 类似资料:
  • 问题内容: 我们有一个MVC(MVC4)应用程序,该应用程序有时可能会收到一个从第三方发送到我们特定URL(“ http://server.com/events/ ”)的JSON事件。JSON事件位于HTTP POST的正文中,而正文则严格为JSON(-不是在某些字符串字段中带有JSON的表单发布)。 如何在控制器主体中接收JSON主体?我尝试了以下内容,但一无所获 [编辑] :当我说 什么都没得

  • 问题内容: 我需要控制器中的应用程序上下文路径,我尝试了下面的代码抛出NULLPOINTER EXCEPTION。 HttpServletRequest请求; 字符串路径= request.getContextPath(); 请帮我 谢谢 问题答案: 变量已声明,但未初始化。难怪你得到一个。 查看文档以访问与请求相关的其他数据。 读完这些并确定要将代码绑定到本机Servlet API后,请尝试以下

  • 我有过 我通过这种方式传递profileJson: 但是我的配置文件Json对象具有所有空字段。我应该怎么做才能让Spring解析我的json?

  • 问题内容: 我有一个返回JSON的控制器。它采用一种形式,该形式通过spring注释进行验证。我可以从BindingResult获取FieldError列表,但是它们不包含JSP将在标记中显示的文本。如何获取错误文本以JSON形式发送回去? JSONREsponse类只是一个POJO 调用BindingResult.getAllErrors()返回FieldError对象的数组,但没有实际错误。

  • 我正在尝试JavaFX,但仍然有很多可能是愚蠢的初学者问题。 我今天的问题如下: 我在Scene builder and Controller中创建了一个流程窗格,我想在其中添加一个右键单击选项,打开一个关联菜单。 通过场景生成器,我添加了OnContextMenuRequest函数并在控制器中定义了它。 为了检查,我在函数中添加了一个打印命令和一个对话框,效果很好。 然而,上下文菜单不起作用。。

  • 问题内容: 有没有办法从AngularJS中的当前$ scope中获取控制器名称? 问题答案: 不,不可能。如果属于指令怎么办?没有属性可以检索有关该范围所属的控制器的信息。