[SpringBoot]with JPA 23 - 73

해내면 그만!XX·2022년 8월 10일
0
//JPA Naming 쿼리
//SELECT * FROM user WHERE username = ? AND password = ?;
User findByUsernameAndPassword(String username, String password);

전통적인 로그인 방식(세션에 저장해서 사용하는 방식)

	@PostMapping("/api/user/login")
	public ResponseDto<Integer> login(@RequestBody User user, HttpSession session) {
		User principal = userService.login(user);
		if(principal != null) {
			session.setAttribute("principal", principal);
		}
		return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);
	}

스프링 시큐리티 로그인 방식
pom.xml 라이브러리만 추가하면 된다.
세션이 자동으로 생성, 토큰값으로 로그인이 된다.

<%@ taglib prefix = "sec" uri = "http://www.springframework.org/security/tags" %>

<sec:authorize access="isAuthenticated()">
	<sec:authentication property="principal"  var="principal" />
</sec:authorize>

스프링 시큐리티가 로그인 요청을 가로채서 로그인을 진행하고 완료가 되면 UserDetail타입의 오브젝트를 스프링 시큐리티의 고유한 세션저장소에 저장해주는 Config의 목록을 반환해주는 메소드

	@Override
	public Collection<? extends GrantedAuthority> getAuthorities() {
		
		Collection<GrantedAuthority> collectors = new ArrayList<>();
		collectors.add(new GrantedAuthority() {
			
			@Override
			public String getAuthority() {
				return "ROLE_" + user.getRole();
			}
		});
		return collectors;
	}

람다식으로 변환

	@Override
	public Collection<? extends GrantedAuthority> getAuthorities() {
		
		Collection<GrantedAuthority> collectors = new ArrayList<>();
		collectors.add(()->{return "ROLE_" + user.getRole();});
		return collectors;
	}

참조
https://www.youtube.com/watch?v=olaeVwjx3J8&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=25
https://getinthere.tistory.com/category/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8%20with%20JPA%20%EB%B8%94%EB%A1%9C%EA%B7%B8

0개의 댓글