728x90
반응형
AdminController.java
package controller;
import java.util.Collections;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import logic.ShopService;
import logic.User;
/*
* AdminController의 모든 메서드들은 반드시 관리자로 로그인 해야 실행되도록 AOP 설정해야 함.
* => AdminLoginAspect 클래스 생성
* 1. 로그아웃 : 로그인하세요. login 페이지로 이동
* 2. 관리자가 아닌 경우 : 관리자만 거래 가능합니다. main 페이지로 이동
*/
@Controller
@RequestMapping("admin")
public class AdminController {
@Autowired
private ShopService service;
@RequestMapping("list")
public ModelAndView list(Integer sort, HttpSession session) {
ModelAndView mav = new ModelAndView();
List<User> list = service.userlist(); //회원목록을 db에서 조회
//id, name 오름차순 정렬설정
if (sort == null) sort = 0;
switch(sort) {
case 1 : Collections.sort(list,(u1,u2)->u1.getUserid().compareTo(u2.getUserid()));
break;
case 2 : Collections.sort(list,(u1,u2)->u2.getUserid().compareTo(u1.getUserid()));
break;
case 3 : Collections.sort(list,(u1,u2)->u1.getUsername().compareTo(u2.getUsername()));
break;
case 4 : Collections.sort(list,(u1,u2)->u2.getUsername().compareTo(u1.getUsername()));
break;
}
mav.addObject("list",list);
return mav;
}
}
AdminLoginAspect.java
package aop;
import javax.servlet.http.HttpSession;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import exception.LoginException;
import logic.User;
@Component //객체화
@Aspect //AOP 클래스로 사용함
public class AdminLoginAspect {
@Around("execution(* controller.Admin*.*(..)) && args(..,session)")
public Object adminCheck(ProceedingJoinPoint joinPoint, HttpSession session) throws Throwable {
User loginUser = (User)session.getAttribute("loginUser");
if(loginUser == null) { //로그인이 안된 상태
throw new LoginException("[adminCheck]로그인 후 거래하세요", "../user/login");
} else if (!loginUser.getUserid().equals("admin")) {
throw new LoginException("[adminCheck]관리자만 거래 가능합니다.", "../user/main");
}
return joinPoint.proceed(); //다음 메서드 호출
}
}728x90
반응형
'study > Spring' 카테고리의 다른 글
| [Spring] 24. Spring (게시판[Board.java, BoardDao.java, BoardController.java, list.jsp]) (0) | 2022.05.13 |
|---|---|
| [Spring] 24. Spring (아이디찾기, 비밀번호찾기[idsearch.jsp, pwsearch.jsp, search.jsp]) (0) | 2022.05.12 |
| [Spring] 24. Spring (회원목록[list.jsp]) (0) | 2022.05.12 |
| [Spring] 24. Spring (회원탈퇴[delete.jsp]) (0) | 2022.05.12 |
| [Spring] 24. Spring (비밀번호 변경[password.jsp]) (0) | 2022.05.11 |