work on different mechanisms of accessing the currently authenticated principal

This commit is contained in:
eugenp 2013-07-17 22:44:08 +03:00
parent 6458f2f32a
commit aef5e03097
8 changed files with 177 additions and 4 deletions

View File

@ -0,0 +1,21 @@
package org.baeldung.security;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
@Component
public class AuthenticationFacade implements IAuthenticationFacade {
public AuthenticationFacade() {
super();
}
// API
@Override
public final Authentication getAuthentication() {
return SecurityContextHolder.getContext().getAuthentication();
}
}

View File

@ -0,0 +1,9 @@
package org.baeldung.security;
import org.springframework.security.core.Authentication;
public interface IAuthenticationFacade {
Authentication getAuthentication();
}

View File

@ -1,7 +1,5 @@
package org.baeldung.web.controller;
import javax.servlet.http.HttpServletResponse;
import org.baeldung.web.dto.Foo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
@ -10,7 +8,6 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.util.UriComponentsBuilder;
@Controller
@RequestMapping(value = "/foo")
@ -27,7 +24,7 @@ public class FooController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
public Foo findOne(@PathVariable("id") final Long id, final UriComponentsBuilder uriBuilder, final HttpServletResponse response) {
public Foo findOne(@PathVariable("id") final Long id) {
return new Foo();
}

View File

@ -0,0 +1,39 @@
package org.baeldung.web.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class SecurityController1 {
@Autowired
private ApplicationEventPublisher eventPublisher;
public SecurityController1() {
super();
}
// API
@RequestMapping(value = "/username1", method = RequestMethod.GET)
@ResponseBody
public String currentUserName() {
final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (!(authentication instanceof AnonymousAuthenticationToken)) {
final String currentPrincipalName = authentication.getName();
System.out.println("Authentication: " + authentication);
System.out.println("Principal: " + authentication.getPrincipal());
return currentPrincipalName;
}
return null;
}
}

View File

@ -0,0 +1,25 @@
package org.baeldung.web.controller;
import java.security.Principal;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class SecurityController2 {
public SecurityController2() {
super();
}
// API
@RequestMapping(value = "/username2", method = RequestMethod.GET)
@ResponseBody
public String currentUserNameSimple(final Principal principal) {
return principal.getName();
}
}

View File

@ -0,0 +1,24 @@
package org.baeldung.web.controller;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class SecurityController3 {
public SecurityController3() {
super();
}
// API
@RequestMapping(value = "/username3", method = RequestMethod.GET)
@ResponseBody
public String currentUserNameSimple(final Authentication authentication) {
return authentication.getName();
}
}

View File

@ -0,0 +1,28 @@
package org.baeldung.web.controller;
import java.security.Principal;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class SecurityController4 {
public SecurityController4() {
super();
}
// API
@RequestMapping(value = "/username4", method = RequestMethod.GET)
@ResponseBody
public String currentUserNameSimple(final HttpServletRequest request) {
final Principal principal = request.getUserPrincipal();
return principal.getName();
}
}

View File

@ -0,0 +1,30 @@
package org.baeldung.web.controller;
import org.baeldung.security.IAuthenticationFacade;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class SecurityController5 {
@Autowired
private IAuthenticationFacade authenticationFacade;
public SecurityController5() {
super();
}
// API
@RequestMapping(value = "/username5", method = RequestMethod.GET)
@ResponseBody
public String currentUserNameSimple() {
final Authentication authentication = authenticationFacade.getAuthentication();
return authentication.getName();
}
}