파트 7: 멤버십과 권한
- 본 번역문서의 원문은 Part 7: Membership and Authorization www.asp.net 입니다.
- 본 번역문서는 ASP.NET MVC 예제 - MVC 뮤직 스토어 (IV) www.taeyo.net 에서도 함께 제공됩니다.
MVC 뮤직 스토어 응용 프로그램은 ASP.NET MVC와 Visual Studio for Web Development를 소개하고,
그 사용법을 단계별로 살펴보기 위한 자습용 응용 프로그램으로, 온라인 음반 판매 기능을 비롯하여,
기초적인 사이트 관리, 사용자 로그인, 장바구니 기능 등이 구현된 간단한 전자상거래 사이트 예제입니다.
본 자습서 시리즈에서는 ASP.NET MVC 뮤직 스토어 응용 프로그램을 구축하기 위해서 필요한 모든 단계들을 자세하게 살펴볼 것입니다.
이번 파트 7에서는 멤버십과 권한에 관해서 살펴봅니다.
지금 이 상태에서는 MVC 뮤직 스토어 사이트를 방문한 모든 사용자들이 StoreManager 컨트롤러에 접근할 수 있습니다. 이번 파트에서는 이 문제점을 보완해서 사이트 관리자만 StoreManager 컨트롤러에 접근할 수 있도록 권한을 제한해보도록 하겠습니다.
Account 컨트롤러 및 뷰 추가하기
완전한 ASP.NET MVC 3 Web Application 템플릿과, 본 자습서에서 MVC 뮤직 스토어 프로젝트를 생성할 때 선택했던 ASP.NET MVC 3 Empty Web Application 템플릿 간의 몇 가지 중요한 차이점들 중 하나는, 빈(Empty) 템플릿에는 Account 컨트롤러(즉, AccountController 클래스)가 포함되어 있지 않다는 것입니다. 본문에서는 작업 상의 편의를 위해, 완전한 ASP.NET MVC 3 Web Application 템플릿을 이용해서 새롭게 만든 ASP.NET MVC 응용 프로그램에서 몇 개의 파일을 복사해서 Account 컨트롤러를 추가해보도록 하겠습니다.
먼저, ASP.NET MVC 3 Web Application 템플릿을 사용해서 새로운 ASP.NET MVC 응용 프로그램을 생성한 다음, 아래의 파일들을 MVC 뮤직 스토어 프로젝트의 동일 디렉터리로 복사합니다:
- Controllers 디렉터리의 AccountController.cs 파일을 복사합니다.
- Models 디렉터리의 AccountModels.cs 파일을 복사합니다.
- Views 디렉터리 하위에 Account라는 이름의 디렉터리를 만들고, 네 개의 뷰 파일들을 모두 복사합니다.
그런 다음, 이 컨트롤러 클래스와 모델 클래스들의 네임스페이스를 MvcMusicStore로 시작하도록 변경해야 합니다. 즉, AccountController 클래스는 MvcMusicStore.Controllers 네임스페이스를, 그리고 AccountModels 클래스는 MvcMusicStore.Models 네임스페이스를 사용하도록 변경해야 합니다.
파일 복사 작업을 모두 마치고 나면, 솔루션 탐색기의 모습은 다음과 같을 것입니다:
ASP.NET 구성 사이트를 이용해서 관리자 추가하기
당연한 얘기겠지만, 웹사이트에 권한을 적용하려면, 먼저 적당한 권한을 갖고 있는 사용자부터 만들어야 합니다. 사용자를 생성할 수 있는 가장 간단한 방법은 내장되어 있는 ASP.NET 구성 웹사이트를 이용하는 것입니다.
이 ASP.NET 웹 사이트 관리 도구를 실행하려면, 솔루션 탐색기에서 다음과 같은 모양의 아이콘을 마우스로 클릭합니다.
그러면, ASP.NET 구성 웹사이트가 실행되는데, 먼저 홈(Home) 화면에서 보안(Security) 탭을 클릭한 다음, 화면 중앙에 위치한 "역할 사용(Enable roles)" 링크를 클릭합니다.
그리고, "역할 만들기 또는 관리(Create or Manage roles)" 링크를 클릭합니다.
새 역할 이름에 "Administrator"라고 입력한 다음, "역할 추가(Add Role)" 버튼을 누릅니다.
다시 "뒤로(Back)" 버튼을 클릭해서 이전 화면으로 돌아간 다음, 이번에는 좌측의 "사용자 만들기(Create user)" 링크를 클릭합니다.
그리고, 화면 좌측의 사용자 정보 필드에 다음의 정보들을 입력합니다:
필드 | 값 |
---|---|
User Name | Administrator |
Password | password123! |
Confirm Password | password123! |
(실제로 존재하는 임의의 전자우편 주소) | |
Security Question | (여러분이 원하는 임의의 질문) |
Security Answer | (여러분이 원하는 임의의 답변) |
마지막으로, 이 사용자에게 Administrator 역할을 부여한 다음, "사용자 만들기(Create User)" 버튼을 클릭합니다.
그러면, 사용자가 정상적으로 생성되었다는 내용의 메시지가 나타날 것입니다.
모든 작업을 마쳤으면 브라우저 창을 닫습니다.
역할 기반 인증
이제 [Authorize] 어트리뷰트를 적용해서 StoreManagerController 클래스에 대한 사용자의 접근을 제한할 수 있습니다. 다음과 같이 [Authorize] 어트리뷰트를 적용하면, 오직 Administrator 역할에 포함된 사용자만 이 클래스의 액션에 접근이 가능하게 됩니다.
[Authorize(Roles = "Administrator")] public class StoreManagerController : Controller { // 컨트롤러 코드 }
이제부터는 /StoreManager로 이동하면, 다음과 같은 Log On 대화 상자가 나타나게 됩니다:
본문에서 새로 만든 관리자 계정으로 로그온하면, 예전처럼 음반 정보 편집 화면으로 이동할 수 있습니다.
질문이나 의견이 있으시면 http://mvcmusicstore.codeplex.com/을 방문해주시기 바랍니다.
- 파트 1: 개요 및 프로젝트 생성하기 2012-07-16 11:33
- 파트 2: 컨트롤러 2012-07-16 13:34
- 파트 3: 뷰와 뷰 모델 2012-07-23 13:34
- 파트 4: 모델과 데이터 접근 2012-07-23 13:34
- 파트 5: 폼 편집하기 및 템플릿 사용하기 2012-08-05 13:34
- 파트 6: 데이터 어노테이션을 사용하여 모델 유효성 검사하기 2012-08-05 13:34
- 파트 7: 멤버십과 권한 2012-08-17 13:34
- 파트 8: 장바구니와 Ajax 업데이트 2012-08-17 13:34
- 파트 9: 등록 및 결제 2012-10-15 13:35
- 파트 10: 탐색 및 사이트 디자인 최종 수정, 결론 2012-10-15 13:35