[Principal] ๋ก๊ทธ์ธ ๋ ์ ์ ์ ์ ๋ณด๋ฅผ JWT(Token)๋ก ๋ถ๋ฌ์ค๊ธฐ
๊ทธ ์ ๊น์ง๋ api์์ ์ง์ userid๋ฅผ ๊ฑด๋ด๊ณ
JPA CRUD FindByUserId๋ฅผ ํตํด ์ ์ ์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์์๋ค.
ํ์ง๋ง ํ์๊ฐ์
์ ํ๊ณ , ๋ก๊ทธ์ธ์ ํ๊ฒ ๋๋ฉด token์ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก
UMC APP API๋ฅผ ํ์๋ถ๊ป์ ์์ฑํด์ฃผ์
จ๋ค.
๊ทธ๋ ๋ค๋ฉด, token(authorization์ ์๋)๋ฅผ ๊ณ์ ์ฌ์ฉํด์ json์ ๋ฐ์์์ผํ๋ ์ํฉ์์๋
userId๋ฅผ ๋ณด๋ด์ง ์๊ณ jwt๋ฅผ ํตํด์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์ง ์์๊นํ๋
์๋ฌธ์ด ๋ค์๋ค.
์ด์ ๋ฐ๊ฒฌํ๊ฒ ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ ์ค,
๐ป๋์๋ฆฌ ์ฑ ํ๋ก์ ํธ์์๋ Principal์ ์ฌ์ฉํ๊ฒ ๋์๋ค.(@AuthenticationPrincipal ์ด๋ SecurityContextHolder, Authentication ๋ชจ๋ ์ฌ์ฉํ๋๋ฐ ์๋ฌ ๋จ,, ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์,,)
-> ๋๋จธ์ง ๋ฐฉ์์ ๋ธ๋ก๊ทธ ์ถ์ฒ์ ๋ชจ๋ ๋ด๋๋ก ํ๊ฒ ๋ค ์ธ์ ๊ฐ ๋ ์ธ ์ผ์ด ์๊ธ์ ,,
โญPrincipal
ํ์๊ฐ์
์ ํ๋ฉด jwt token ๊ฐ์ ๋ฐ๊ฒ ๋๋๋ฐ, ์ด๋ DB Entity์ userId์ ํจ๊ป ์๋์ผ๋ก ์ ์ฅ์ด ๋๋ค. token ๊ฐ์ ์๋ฉด userId์ ๊ฐ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
API์ path๋ฅผ ์ง์ ํ๊ณ , token ๊ฐ์ ์
๋ ฅํ๋ฉด Controller Parameter๋ฅผ ํตํด Principal ๊ฐ์ ๋ถ๋ฌ์จ๋ค. ์ด๋ฅผ Service์ ์ ๋ฌํ๊ณ .getName() Method๋ฅผ ํตํด userId๋ฅผ ๋ถ๋ฌ์จ๋ค. ์ด๋ฅผ findByUserId๋ก UserEntity์ ๊ฐ์ ์๊ฒ ๋๋ค๋ฉด userId๋ฅผ ๋ฐ๋ก RequestBody๋ PathParam์ ์์ฑํ์ง ์์๋ ๋๋ ๊ฒ์ด๋ค.
๊ฐ๋จํ๊ฒ ์์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์๋ฉด, ๋ค์๊ณผ ๊ฐ๋ค.
//Controller
@PostMapping(value = "hasUser")
public ResponseEntity<Boolean> hasUser(Principal principal)
{
return new ResponseEntity.ok(SentenceService.hasUser(principal));
}
//Service
public Boolean hasUser(Principal principal){
User user = userRepository.findByUserId(principal.getName());
if(user!=null){return true;}
else return false;
}
Principal์ ํตํด token์ ์๋ User์ id ๊ฐ์ ๋ถ๋ฌ์ค๋ .getName() ์ด๋ผ๋ Getter ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
์ด๋ฅผ ํตํด ๋ฐ๋ก RequestBody๋ QueryParam ๋ฑ์ ํตํด ์ง์ userId ๊ฐ์ ๋ถ์ด์ค์ง ์์๋ ๋๋ค. (Token ๊ฐ์ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ป์ผ๋ฉด ๋๊ธฐ ๋๋ฌธ)
[์ถ์ฒ]
๐ ์ฒซ ๋ฒ์งธ ์ถ์ฒ ๋ธ๋ก๊ทธ
๐ ๋ ๋ฒ์งธ ์ถ์ฒ ๋ธ๋ก๊ทธ