brograming
토근 /cmd로 vue 프로젝트 생성_0607 본문
패키지 spring_restapi_shop
로그인 유지 : 세션
rest-api : stateless(상태유지안함)
=> 로그인 유지로 token사용. jwt토큰. 토큰에 정보를 담아서 암호화 => 복호화
=> 인증 통과한 유저엥게 생성한 토큰 줌.
=> 유저는 받은 토큰을 요청 헤더에 담아서 보냄
패키지 spring_restapi_shop.pom.xml에 복사
<pom.xml>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-jackson -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-impl -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>

▼ShopmemberController.java에 추가
// ==================================================================
// 0607 토큰
@Autowired
private JwtTokenProvider tokenprovider;//멤버변수로 토큰 브로바이더 추가
// 회원가입/세션아이디발급/검색/내정보수정/삭제
@PostMapping("/login")
public Map login(String id, String pwd) {
Map map = new HashMap();
boolean flag = false;
ShopmemberDto dto = service.getMember(id);
if (dto != null && pwd.equals(dto.getPwd())) {
String token = tokenprovider.generateJwtToken(dto); // 토큰 생성
flag = true;
map.put("token", token);
}
map.put("flag", flag);
return map;
}
// 검색
@PostMapping("/token")
public Map getByToken(String token) {
boolean flag = true;
Map map = new HashMap();
try {
// 받은 토큰에서 로그인한 사람의 아이디, 타입 정보를 추출
String id = tokenprovider.getUsernameFromToken(token);
int type = tokenprovider.getRoleFromToken(token);
map.put("id", id);
map.put("type", type);
} catch (Exception e) {
flag = false;
}
map.put("flag", flag);
return map;
}
// 검색
@GetMapping("")
public Map getInfo(@RequestHeader("token") String token) { // @RequestHeader("token") : 요청 헤더 객체 받아오기
boolean flag = true;
Map map = new HashMap();
try {
String id = tokenprovider.getUsernameFromToken(token);
int type = tokenprovider.getRoleFromToken(token);
map.put("id", id);
map.put("type", type);
} catch (Exception e) {
flag = false;
}
map.put("flag", flag);
return map;
}
// ==============================================================

▼aaa토큰
eyJyZWdEYXRlIjoxNjg2MDk4NzA4NzY1LCJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6MSwidXNlcm5hbWUiOiJhYWEiLCJleHAiOjE2ODYxMDIzMDh9.-r4C7MG-1unKalnWWUm9bV-oWD2QsnEc_qWqcZqIabg


▼bbb토큰
eyJyZWdEYXRlIjoxNjg2MDk4ODA1OTI2LCJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6MiwidXNlcm5hbWUiOiJiYmIiLCJleHAiOjE2ODYxMDI0MDV9.MXc8KXnoUhYAvsNWxfVOrpyyREmf-Mhd0ZSO6UkiBY4
패키지 shop_client
login.html에 아래 코드로 수정
$.ajax({
url:'http://localhost:8082/members/login',
type:'post',
dataType:'json',
data:{'id':$('#id').val(), 'pwd':$('#pwd').val()},
success:function(result){
if(result.flag){
sessionStorage.setItem("token", result.token);
location.href="../index2.html";
}else{
alert('로그인 실패');
}
},
error:function(req, status){//req:요청객체, status:상태값
alert(status);
}
});


ajax를 사용하려면 axios를 설치해야함
------------------- cmd프롬프트 --------------------------
1.
C:\Users\KOSTA>cd c:\vuePrj
c:\vuePrj>npm install axios --save

2.
c:\vuePrj>npm install vue-router --save

3.
vuePrj에 shop프로젝트 생성
c:\vuePrj>vue create shop 치고 엔터.











visual studio code 실행. shop폴더 열기
1.

2.
import axios from "axios";
const app = createApp(App)
app.use(store)
app.use(router)
app.config.globalProperties.$axios = axios;
app.mount('#app')
라우터 : 경로를 지정하면 어떤 컴포넌트을 실행할지 지정해줌.






ajax로 서버에 요청보내기
'Kosta' 카테고리의 다른 글
| [Spring] JPA 0516 (0) | 2023.05.16 |
|---|---|
| [Spring]05_12 (0) | 2023.05.12 |
| [Spring]05_11 jquery,ajax로 댓글달기 (0) | 2023.05.11 |
| [Spring]05_10 MemberDao.java 의존성 주입, resultmap, (0) | 2023.05.10 |
| [Spring]05_09 (0) | 2023.05.10 |