Den aktuell angemeldeten Benutzernamen in Spring Security abrufen

Aktuellen Benutzernamen in Spring Security abrufen

In diesem Artikel zeigen wir Ihnen drei Möglichkeiten, um den aktuell angemeldeten Benutzernamen in Spring Security abzurufen.

1. SecurityContextHolder + Authentication.getName ()

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class LoginController {

  @RequestMapping(value="/login", method = RequestMethod.GET)
  public String printUser(ModelMap model) {

      Authentication auth = SecurityContextHolder.getContext().getAuthentication();
      String name = auth.getName(); //get logged in username

      model.addAttribute("username", name);
      return "hello";

  }
  //...

2. SecurityContextHolder + User.getUsername ()

import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class LoginController {

  @RequestMapping(value="/login", method = RequestMethod.GET)
  public String printUser(ModelMap model) {

      User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
      String name = user.getUsername(); //get logged in username

      model.addAttribute("username", name);
      return "hello";

  }
  //...

3. BenutzernamePasswortAuthenticationToken

Dies ist eine elegantere Lösung. Zur Laufzeit injiziert SpringUsernamePasswordAuthenticationToken in diePrincipal-Schnittstelle.

import java.security.Principal;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class LoginController {

  @RequestMapping(value="/login", method = RequestMethod.GET)
  public String printWelcome(ModelMap model, Principal principal ) {

      String name = principal.getName(); //get logged in username
      model.addAttribute("username", name);
      return "hello";

  }
  //...

Quellcode herunterladen

Laden Sie es herunter -Spring-Security-Get-Logged-In-Username.zip (9 KB)