태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
페이지를 읽고 있습니다. ( 아쿠아바다's Blog )
분류 전체보기 (769)
쉐어포인트 (24)
Exchange (12)
SQL (121)
XML (36)
WEB (294)
O / S (97)
삶의향기 (162)
기획 (19)
RSS 피드(IE 7.0부터 기본 지원됩니다. 이전 버전 사용자는 접합한 툴을 사용하세요!!)

Asp.net 2.0 login

WEB/ASP / DotNet 2007/06/07 17:29 by 아쿠아바다
[ASP.NET 2.0]
  [FreeCoder] (1) Login Controls - Web Site Administration Tool

Asp.net 프로그래밍을 해봤다면 Web.config 를 모르는 사람은 없을 것이다. Web.config를 모두들 구성해
봤을 것이다. 현재까지 친절한 주석처리 되어있는 web.config 의 주석을 풀어가며  우리는 손으로 직접
태그를 넣어주고 작성했다.


친절한 주석은 아무것도 없는상태에서 작성하려는 프로그래머를 배려한 것이겠지만 바뀌진 Visual Studio
2005(Whidbey)에서는 web.config의 관리를 Web Site Administration Tool 을 사용하여 관리하도록
유도 하고 있다.


이전의방법으로 직접 작성할수도 있겠지만 기본요소를 명확히 알고 tool을 사용할줄 안다면 훨씬 능률적으로 관리 할수 있을것이다.

로그인 컨트롤들에 대해 알아보기전에 유저, 그룹, 액세스 제어를 설정할수 있는 web.config 파일을 쉽게
관리해주는 웹사이트 관리 툴에 대해 알아보도록 하자.

Web Site Administration Tool

Web Site Administration tool( 이하 웹사이트 관리 툴 ) 은 상단의 website 의 ASP.NET Configuration을 선택하여 사용할수 있다.


Web Site Administration tool 은 총 4개의 탭으로 이루어져 있으나 안내를 하고 있는 Home 탭을 제외
하고 나면 총 3개의 탭에 관한 내용이 우리가 다룰 내용이다. 그럼 탭 순서대로 알아보도록 하자.

 

 먼저 웹 사이트 관리 툴은 웹페이지 형식으로 되어져 있다. 어디에선가 우리가 만드는 Website와 같이
관리되어진고 추측할수 있다.

[asp.netwebadminfiles]

 
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\Temporary ASP.NET Files\asp.netwebadminfiles


뭔가 작업하던것을 을 깨끗이 지우고 다시 하고 싶다면 위의 폴더 아래를 지우고 다시 해볼수 있다.
( 그럴 필요는 거의 없겠지만 왠지 캐쉬 되어 있는것을 깨끗이 지우고 싶다면 말이다. ^^ )
탭별로 진행해 가며 기존의 것이 tool로써 어떻게 반영되어 있는지 확인해 보도록 하자.


Security

Home 에서 Security 탭에 대한 내용이 간단히 나와 있다. 사이트에 대한 유저(user), 역할(role), 액세스
권한(access permissions) 을 설정 및 편집할수 있다.

 


Security 에는 우리가 알아야 할 내용들에 대해 간략히 설명하고 있다. 두문단에 의해 나누어져 있는데
첫번째 에 것은 Home 의 내용과 비슷하다. 우리가 주목해야 할것은 두번째 문단이다.
유저 정보는  웹사이트 데이터 폴더Microsoft Access database  로 저장 되어진다고 쓰여져있다.

우리는 Security 탭을 눌렀을때 바로 생성되는 database 파일을 찾아볼수 있다.
솔루션 탐색기를 열어 Refresh 해보자. App_Data(데이터 폴더) 란 폴더가 생겼음을 알수 있다. 폴더 안까지
확장해서 보자.  


확장자는 MDF , LDF 의 MSSQL 확장자이다. 내부적으로 MSSQL 데이터 베이스를 사용하고 있음을 알수 있다.

Security 탭의 안내 메세지에서 MS Access 를 지원한다는 말은 기존에 Access 파일과 MSSQL 파일 모두를
지원하도록 하여 Provider 를 지원하도록 했으나 Beta 버전에서는 수정 된듯하다. 정식 버전에서는 어떻게
될지는 모르겠지만 결국 현재 알수 있는것은 MSSQL Provider 를 지원하는 MSSql의 database 파일이 생성된
다는 것이다.
 

wizard를 실행하기전에 web site 에 일반 폴더(Regular Folder) 하나를 생성하자. 관리자를 위한 페이지
이므로 AdminPages라고 하자.
 

Security 탭을 처음 사용한다면 화면 중앙의 step by step형식의 의 wizard 를 이용할것을 권장하고 있다.

 

[ Security Tab 의 처음 사용자를 위한 Wizard 링크 ]

 
Use the security Setup Wizard to configure security step by step.



이제 Wizard를 따라 진행해 보자.

Step1.    안내 인사말이므로 바로 다음을 누르면 된다.

 


Step2.   웹에서 사용자가 구성한 웹페이지를 사용하기 위해 From the internet 을 선택하고 다음을 누르자

- 다음 버튼을 누름과 동시에 web.config 에 다음과 같은 요소가 포함 된다.

[ web.config ]

 
<system.web>
<authentication mode="Forms" />
</system.web>

Step3  사이트 관리 데이터를 저장하기 위한 provier 를 선택할수 있다는 안내 메세지이다. 다음을 누르자.

 


Step4. 롤에관한 내용은 나중에 구성할것이다. Enable roles for this Web site. 는 체크하지 않는다

 


Step5. 사용자를 생성하자. 주의 해야 할것은 패스워드를 만들때 특수 문자를 넣어야 쉽게 생성할수
            있을것이다. 최소한 하나의 생성자는 생성하도록 하자.


Step6. Access Rules을 추가할수 있다 룰을 적용할 폴더를 위자드를 실행하기전에 만든AdminPages
           선택하자. 룰을 적용할 대상에 Anonymous Users 선택하자. 권한은 Deny을 선택하자.

Add this Rule 버튼 을 눌러 생성한 룰을 저장하자.

[ AdminPages\web.config ]

 
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>


Step7. 완료 화면이다  Finish 버튼을 눌러 끝내자.

 



완료된 화면은 다음과 같다.


Users
Create user   ( user를 다시 생성할수 있다. )
Manage users  (삭제, 편집 할수 있다. )
Select authentication type  (인증 폼을 선택할수 있다. )

Roles Enable Roles  ( 롤을 적용여부를 쉽게 선택할수 있다. )
Create or Manage roles (롤을 생성및 관리 할수 있다. )

Rules Create Access Rules   ( 스텝에서 본것과 비슷한 화면에서 룰을 쉽게 추가할수 있다. )
Manage Access Rules    ( 룰을 관리 한다. )


이탭의 마지막사용으로 롤을 생성해보자. Create or Manage roles 링크 버튼을 누르게 되면 롤의 이름을 지정한후
다음과 같은 화면을 볼수 있다. 자신이 생성했던 user를 등록시키면 된다. 롤은 그룹개념이라고 생각하면
훨씬 쉽게 구성할수 있을것이다. 롤은 Enable Roles 버튼으로 적용여부를 쉽게 선택할수 있다.
 

.


 

Application Configuration

 

Application Settings

 - 특정 변수와 값을 지정하던것을 툴로써 제공한다.

 
 

[ web.config ]

 
<appSettings>
<add key="dbconnecting" value="server=(local); database=pubs; User ID=sa; Password=;" />
</appSettings>

[ appSetting 변수 사용]

 
string strConn = ConfigurationManager.AppSettings["dbconnecting"];
 



 

SMTP Settings

이 세팅은 로그인 창에서 패스워드 잊었을 경우 사용자 등록시 입력한 메일 주소로 보낼수 있도록 smtp 서버를
세팅할수 있도록 한다. 하지만 이 화면은 설정 되지 않는다. 아직 beta 버전이라서 그런듯 하다. 원인은
MailSettingsSection 이란 Class 가 제거 된것이 아직 반영되지 못한듯 하다.

  어째든 생성되는 코드 형식은 다음과 같다.

[ web.config ]

 
<configuration>
<system.net>
<mailSettings>
<smtp>
<network host="smtp.myhost.com" />
</smtp>
</mailSettings>
</system.net>
</configuration>



 

Application Status

  이 옵션을 통해 application 을 중지시킬수 있다.

[ web.config ]

 
<httpRuntime enable="false" />
 

 => 정지 시켰을 경우 위와 같은 요소가 삽입되나 실행은 위의 요소가 제거되는것이 실행이다. (실행은 Default 이므로)


Debugging and Tracing

디버깅및 추적 구성하기 화면

 


디폴트 에러페이지 선택화면

 
 

[ web.config ]

 
<configuration>
<system.Web>
<customErrors defaultRedirect="~/MyDefaultErrorPage.aspx" />
<trace enabled="True" localOnly="false" />
<compilation debug="True" />
</system.Web>
</configuration>



 


Provider Configuration

- 멤버쉽이나 롤 관리 와 같은 다양한 요소의 데이터의 저장 공간을 관리 할수 있는 provider class 를 제공한다.

 

- 첫 화면에 두개의 선택 화면이 있다.

1.사이트의 모든 관리 데이터를 위한 Provider 를 선택화면, 베타 버전이라 그런지 선택할것이 하나이다 ^^;



2. 각각의 요소에 따른 Provider 선택이 있다.

    - Membership Provider
    - Role Provider

 


아직 Provider 의 선택화면에는 들어가 있진 않지만 SQL Server를 Provider 를 선택하고자 할때 다음과
같은 명령을 통해 Tool을 이용해 볼수 있겠다 아직은 웹사이트 관리툴에는 포함되어 있진 않지으로
참조만 하도록 하자.

다음과 같은 폴더에서 옵션없이 다음명령을 실행한다. 알고 있겠지만 /? 옵션으로 여러 옵션에 대해
알아볼수 있을것이다.


C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215>aspnet_regsql.exe


1. ASP.NET SQL Server 세팅에 대한 환영 메세지이다.


2. 수행하려고 하는 작업에 대한 선택이다. 필자는 SQL Server 구성을 선택하였다.

 

3. 데이터 베이스에 접근하고자 하는 연결 정보를 입력하고 있다.

 

4. 입력한 연결정보가 맞는지 확인하고 있다.


5. 창을 닫고 입력한 데이터 베이스를 확인해보면 웹사이트를 관리하는데 필요한 테이블들이 생성되어져 있을것이다.


 

정리

1. 기존의 web.config를 tool 형태로 지원하는 Web Site Administration Tool 을 사용해 보았다.

2. 우리가 자주쓰는 web.config에서 지원하는 요소들을 tool로서 쉽게 관리 할 수 있었다.

3. 폴더에 대한 Rule 은 폴더안의 web.config에 액세스 권한에 대한 내용이 설정 되었다.

4. 관리에 필요한 데이터를 APP_DATA 에 데이터베이스 형태로 지원하는것을 알수 있었다.

5. Provider 를 선택하므로써 다른저장 공간을 선택할수 있음을 알수 있었다.


web.config의 요소에 대한 세세한 설명을 붙이다가 툴에 대한 설명이 아닌 기존의 web.config 요소에 대한
중복된 장황한 설명이 되어 tool의 사용및 사용에 따른 영향을 미치는 요소에 중점을 맞추고, 기존의
 web.config 요소에 대한 설명을 자제하였습니다.
이상, 웹 사이트 관리 도구를 사용하는 초보에게 도움이 되었으면 합니다. ^^

  작성자 : FreeCoder(프리코더)
  이메일 : admin@freecoder.pe.kr
  홈페이지 : http://www.freecoder.pe.kr/ 

ASP.NET 2.0]
  [FreeCoder] (2) Login Controls - Login Controls

첨부파일 : login_02.zip(3939Kb)

이전 아티클에서 웹사이트 관리 툴에 대해서 다뤄 봤다. 이제 실제적으로 로그인 컨트롤에 대해 알아보도록 하자. 로그인 컨트롤들을 하나씩 배치하면서 그 컨트롤에 대해 알기 보다. 따라하기 식으로 따라해보고 그 간편함을 먼저 느껴본후 컨트롤에 대해 알아보도록 하자.

 로그인 컨트롤 사용하기


새 항목 추가하기를 눌러  Home.aspx 를 하나 생성하고 시작페이지로 등록하자.
이 페이지가 우리가 사용할 첫 메인페이지로 이용할 것이다.

우리는 로그인 페이지로 이동하기 위한 버튼을 하나 만들것이다. 실제적으로는 버튼이 아닌 툴박스의 Login
그룹에서 LoginStatus 이라는 컨트롤이다.


이 컨트롤을 클릭하면 login 페이지로 이동 하게 될것이다.

 

사이트 명을 선택해 아이템을 추가해 login.aspx 페이지를 생성하자.
다시 Login 그룹에서 Login 컨트롤을 가져다 놓도록 하자.


로그인에 대한 Error 메세지를 보여주기 위해 Validation 컨트롤을 추가할 것이다.
Validation 그룹에서 ValidationSummary 컨트롤을 가져다 배치하자.
속성창(F4)를 눌러  ValidationGroup 에 로그인 컨트롤의 아이디(바꾸지 않았다면 id는 Login1이다)를 넣자.

 

다시 Home.aspx 화면으로 돌아와 Login 그룹에서 LoginView 컨트롤을 페이지에 추가한다.

LoginView 컨트롤을 선택해 오른쪽 마우스를 눌러 Edit Template 메뉴AnonymousTemplate 항목을
선택한다. 그럼 컨트롤의 모양이 바뀌면서 뭔가를 입력할수 있을것이다.
Template화면은 로그인 하기전에 사용자에게 보여질 화면이므로 다음과 같이 구성하자.

다시 LoginView 컨트롤을 선택해 오른쪽 마우스를 눌러 Edit Template 메뉴의 LoggedInTemplate

선택하여 로그인 되었을때에 대한 내용을 입력할수 있다.. 로그인 그룹에서 LoginName 컨트롤을 Template
안에 다음과 같이 구성하도록 하자.


LoginView 의 오른쪽 마우스를 눌러 End Template Editing 을 선택하여 편집을 마치자.
로그인에 대한 구성을 모두 마쳤다 . (^^; 너무 간단한거 아닌가요?)
실행(Ctrl+F5)을  통해 확인해 보도록 하자.  

 


로그인에 입력할 계정과 패스워드는 이전 웹사이트 관리자 툴에서 설정한 계정과 아이디를 넣으면 된다.

로그인 전의 안내메시지 로그인 화면에서의 인증, 로그인 된후의 모습까지 완벽하게 동작하는
모습을 볼수 있다. 어떠한 코딩도 없이 몇개의 속성값 설정으로 말이다. 그것두 아주 간단히 ..


몇가지 설정만으로 로그인 페이지를 쉽게 만들수 있다는걸 알았다. 사용된 컨트롤에 대해 알아보자.
편한만큼 잘 사용하기 위해 설정할수 있는것들이 많을것이다. 여기서 대표적인 몇가지를 알아보도록 하자.


LoginStatus

이미 미심적게 생각하고 있었겠지만( 전 모르고 있었습니다 ^^;) 컨트롤을 추가하고 어떠한 설정도 없이
login.aspx 페이지를 잘도 찾아갔다. 이것은 authenticationforms 요소의 loginUrl 속성값이 기본값으로
login.aspx 를 가지고 있기 때문이다.

[web.config]

 
<configuration>
    <system.web>
      <authentication mode="Forms">
         <forms
          ......
           loginUrl="/login.aspx"
           ......
           />
      </authentication>
   </system.web>
</configuration>



login.aspx loginNew.aspx 로 바꾼후 web.config 파일을 다음과 같이 바꿔 실행해 보도록 하자.


[web.config]

 
<authentication mode="Forms">
    <forms loginUrl="~/loginNew.aspx" />
</authentication>


잘 동작하는것을 알수 있다.


 LoginStatus 는 두가지 상태에 대해서만 보여짐을 알수 있다.  이것의 구분은 PageRequest 객체 의 IsAuthenticated 속성값에 따라 보여지도록 되어져 있다.

컨트롤의 옆에 Label 컨트롤을 하나 위치시켜 다음과 같은 값을 넣어 확인해 보도록 하자.

[Home.aspx]

 
Label1.Text = Request.IsAuthenticated.ToString();


=> 이 IsAuthenticated 속성값을 이용해 다른 동작을 하도록 이용할수 있다.


기본값으로 보여지는 login 의 Text 형식의 문자는 LoginText, LogoutText, LoginImageUrl, LogoutImageUrl  등의
속성값을 이용하여 Text나 Image로 쉽게 변형 할 수 있다.

로그 아웃을 하면 Refresh 되어 logout 되는것을 볼수 있다. 만약 다른 페이지로
이동한다거나 하고 싶다면 LogoutAction 값으로 설정하거나 LogoutPageUrl 속성과 함께 사용하여
쉽게 설정할수 있다.


loginName

로그인된 사용자의 이름을 알수 있다. 이름의 형식은  FormatString 속성을 통해 쉽게 변형할수 있다.

[Home.aspx]

 
 LoginName1.FormatString = "회원 {0}님";



loginView

 template 안의 컨트롤에 대해  ViewChanging( 변경전 )  ViewChanged (변경후 )의 이벤트를 이용할수 있다.


login

login 컨트롤의 기능은 어떨지 몰라도 생긴 모습이 맘에 들지 않는다면  오른쪽 마우스를 눌러  show smart tag 메뉴를 눌러
Auto format 을 선택하면 미리 보기 화면을 통해 디자인을 선택할수 있을것이다. 이것또한 마음에 들지 않는다면
Convert to Template 을 통해 직접 수정할수 있다.

로그인 페이지는 LoggingIn 이벤트가 발생하여 Authenticate 이벤트, 마지막으로 LoggedIn 이벤트의 순서로 이루어진다.

LoggingIn 이벤트에서는 Id가 어떤형식( 메일주소 같은것)을 받는다면 Id의 형식(메일주소 형식)을 체크해 볼수 있을것이다.

Authenticate 이벤트 에서는 사용자가 따로 생성한 로그인 방식으로 로그인 해볼수 있을것이다.


[loginPage.aspx]

 
private void OnAuthenticate(object sender, AuthenticateEventArgs e)
{
    bool Authenticated = false;
    Authenticated = SiteSpecificAuthenticationMethod(Login1.UserName, Login1.Password);
    e.Authenticated = Authenticated;
}


LoggedIn 이벤트는 이미 인증 받은 사용자에 대하여, 이후의 응답에 대해서 인증되었음을 증명한다.


정리

1. 로그인 컨트롤을 사용한 로그인 페이지를 구성해 보았다.
2. 로그인 되는 과정에서 로그인 컨트롤들이 어떻게 동작하는지 알아보았다.
3. 로그인된 상태를 어떻게 구분하는지 알아보았다.
4. web.config 의 login 페이지에 대한 Default 설정을 변경 하여 보았다.

  작성자 : FreeCoder(프리코더)
  이메일 : admin@freecoder.pe.kr
  홈페이지 : http://www.freecoder.pe.kr/ 


[ASP.NET 2.0]
  [FreeCoder] (3) Login Controls - Security

첨부파일 : login_03.zip(3950Kb)

웹 사이트 관리 툴과 로그인 페이지을 이용해 웹 페이지에 대한 권한 관리를 통해 사이트 에 대한 보안 설정을  해보도록 하자.


제한된 페이지에 접근제어 하기


관리자나 또는 멤버들만 접근할수 있는 페이지와 같은 제한된 자원에 대한 접근에 대한 관리를

하고자 할경우 롤을 사용하면 효과적으로 관리 할수 있다.


이전 아티클에서 배워본 웹사이트 관리 툴을 이용하여 롤과 룰의 설정하고 로그인 페이지와 함께

액세스 권한이 어떤식으로 Application에 활용되는지 알아보고 관리자와 일반 사용자간의 로그인에

따른 페이지 접근제어를 알아보도록 하자.


기존에 생성한 AdminPages 폴더가 존재 할것이다. 이 페이지에 룰(접근제어) Anonymous, Deny 을 설정해 보았었다.


AdminPages 를생성했을때와 마찬가지로 일반 폴더 하나를 UserPages라는 이름으로 생성하도록 하자.

이폴더에는 는 로그인한 사용자가 접근할수 있는 웹 페이지들이 존재할것이다.

이제 웹사이트 관리 툴(Web Site Administration Tool )을 사용해 user를 다음과 같이 구성하자.

admin01, admin02, user01, user02, member
 


계정에 롤(그룹)을 생성해 할당하도록 하자.

    AdminGroup : admin01, admin02, member

    UserGroup   : user01, user02, member



룰( 액세스 제어 ) 을 생성해 다음과 같이 구성하자.


Access Rule 생성

    UserPages     

            - Anonymous Users , Deny

    AdminPages  

            - Role members(AdminGroup) , Allow

            - All users,  Deny

 


설정된 web.config 는 다음과 같다.


[AdminPages/web.config]

 
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <system.web>
        <authorization>
            <allow roles="AdminGroup" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>



[UserPages/web.config]

 
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <system.web>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
</configuration>



Home.aspx 에 다음과 같이 추가하자.

Hyperlink  : Go User Pages  => ~/UserPages/UserContent.aspx

Hyperlink  : Go Admin Pages=> ~/AdminPages/AdminContent.aspx


UserContent.aspx 페이지에 User Content page 라 제목과 함께 HyperLink 컨트롤을 추가하여

Text : Home,  NavigateUrl : "~/Home.aspx" 라고 설정하자.

AdminContent.aspx 페이지 에도 Admin Content Page 라는 제목과 함께 HyperLink 컨트롤을 추가하여

Text : Home,  NavigateUrl : "~/Home.aspx" 라고 설정하자.


이제 설정을 마무리 하고 접근 권한에 대한 테스트를 해보도록 하자.

Home.aspx 를 시작 페이지로 하여 실행( Ctrl+F5 )하도록 하자.


- Go User Page 링크 버튼을 누르게 되면 login 페이지로 Redirect 될것이다.

- UserGroup 의 멤버인 user01, user02로 로그인 하도록 하자.

- User Content Page 에서 Home을 눌러 Home 페이지에서 Go Admin pages 를 누르도록 하자.

- 현재의 권한으로는 Admin 페이지를 볼수 없어 다시 로그인 페이지로 Redirect 될것이다.

- AdminGroup( admin01, admin02, member )의 계정으로 로그인 하도록 하자.

- 로그인후 Admin 페이지로 접근할수 있다 . 다시 홈으로 돌아와 Guest 페이지에 접근하도록 하자.

- member는 양쪽의 롤에 모두 추가 했으므로 잘 된다고 생각해 볼수 있으나 admin01, admin02도

   모두 접근할수 있는것은 액세스 권한에서 userpages는 로그인한 모든 사용자가 접근 가능 하도록

   되어져 있기 때문이다.


   결국 정리해보면

   userpages     : 로그인한 모든 사용자 .

   adminpages   : AdminGroup 의 사용자만 .


자신이 속한 롤에 대한 정보를 보기 위해 다음과 같은 코드를 넣자.

Home.aspx 에  ListBox control을 추가하여  id를  listRoles 라고 정하자.


[Home.aspx]

 
//if( User.Identity.IsAuthenticated )
if( Request.IsAuthenticated )
{
    listRoles.DataSource = Roles.GetRolesForUser(User.Identity.Name);    
    listRoles.DataBind();
}


=>인증을 체크하는것은 둘중 어느것을 사용해도 좋다.


 

 자신이 속한 롤(그룹)의 모습을 보여주고 있다.

정리

웹 사이트 관리자 툴을 사용하여 롤과 룰을 생성하고 각각의 폴더에 룰( 액세스 제한 ) 을
두어 서로 다른  룰( 그룹 ) 을 가지고 접근하여 보았다.  

  작성자 : FreeCoder(프리코더)
  이메일 : admin@freecoder.pe.kr
  홈페이지 : http://www.freecoder.pe.kr/ 

ASP.NET 2.0]
  [FreeCoder] (4) Login Controls - Sitemap

첨부파일 : sitemap.zip(3962Kb)

이전의 웹사이트 관리 툴과 login 컨트롤을 이용한 로그인 페이지를 사용하여 권한에 따른 페이지 접근을 다뤄 보았습니다
이번 아티클에서는 권한에 따라서 웹페이지의 내용이 필터링 되어 보여질수 있는 sitemap 에 대해 다뤄 보도록 하겠습니다.

따로 이주제에 대해 다룰수 있겠지만 권한에 따라 페이지 접근권한을 다룬다음 다루는것이 좋을것 같다는 생각이 들어 이 아티클을 올립니다. 그럼 시작하겠습니다.


SiteMap을 사용하여 보자.

 좀더 그럴듯한 페이지를 위해 마스터 페이지를 하나 추가하도록 하자. 기존의 페이지 4개에 대해 적용하도록 할것이다.
( Master 페이지에 자세한 내용은 Master 페이지에 대한 아티클을 참조하도록 하자. )

Master 명은 Master1.master 로 정하였다. 전체적인 레이아웃을 설정하기 위해 상단의 메뉴중 Layout 메뉴에서
Insert Table 을 선택하여 Template 옵션의 Header, footer and site 를 선택하도록하자. 필자는 왼쪽 상단에
로그를 배치하고 하단에 고수 홈페이지의 CopyRight를 Copy 하여 다음과 같이 구성하였다.

각 페이지에 마스터를 적용하도록 하자.

Home.aspx

Login.aspx

AdminPasges/ AdminContent.aspx

UserPages / UserContent.aspx

마스터를 만들고 기존의 페이지를 마스터 적용할땐 직접 소스를 수정하여야 한다. 적용하는 방법을 간단히 보도록 하자.

[ContentPage]

 
<@%  Page Language="C#" MasterPageFile="~/Master1.master" .. %>


페이지의 form 태그 안의 내용부분과 위의 <@% Page .. %>을 제외한 모든 부분을 지우도록한다.

form 으로 싼부분을 다음과 같이 감싼다. ( 자세한것은 Master 아티클과 소스를 참조하자. )


[ContentPage]

 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
 .. 내용 ..
</asp:Content>


마스터가 적용된 페이지는 다음과 같다



여기서 페이지 세개의 Content Page 를 더 넣어 보도록 하자. 둘다 페이지를 생성할때 Select Master Page
선택하여 master 페이지를 적용하였다.

Article.aspx  

Blog.aspx

Board.aspx


새로운 아이템을 추가하기를 하여 Web.sitemap을 추가하도록 하자.

sitemap 은 고수 닷넷의 sitemap 을 참조하여 구성하였다. 아티클에 관련해서는 Admin 이관리 한다는 전제하에
블로그에 관해서는 유저가 쓰고 관리 한다고 생각하여 다음과 같이 구성해 보았다. 각자 나름대로 분류를 하여
추가해보기 바란다. 필자의 구성은 다음과 같다 .


[Web.sitemap]

 
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode title="Home" description="Home" url="~/Home.aspx" >
        <siteMapNode title="ArticlePages" description="Article Pages">
            <siteMapNode title="Article" description="Article" url="~/Article.aspx" />
            <siteMapNode title="AdminContent" description="Article Manage" url="~/AdminPages/AdminContent.aspx" />
        </siteMapNode>
        <siteMapNode title="BlogPages" description="Blog Pages">
            <siteMapNode title="Blog" description="Blog" url="~/Blog.aspx" />
            <siteMapNode title="UserContent" description="Write Blog" url="~/UserPages/UserContent.aspx" />
        </siteMapNode>
        <siteMapNode title="BoardPages" description="Board Pages">
            <siteMapNode title="Board" description="Board" url="~/Board.aspx" />
        </siteMapNode>
        <siteMapNode title="Logon" description="Logon" url="~/Login.aspx" />
    </siteMapNode>
</siteMap>





도구 상자의 Data 그룹에서 SiteMapDataSource 을 마스터 페이지에 추가하자 .


상단 오른쪽에 Navigation 그룹에서  SiteMapPath 컨트롤을 을 위치시키자 sitemapPath 컨트롤은 우리가
현재 sitemap 상에서 어떤 경로의 컨텐츠를 보고 있는지 알려 줄것이다. SiteMapPath 의 사용은 각각의 Content
페이지 상단에넣어 테스트 하여도 잘 동작하나 페이지에 넣는것은 항상 그페이지가 나타내는 경로는 일정하므로
Master 페이지에 넣어 사용하는 것이 SiteMapPath의 동작을 바로 볼수 있다.

Navigation 그룹에서 TreeView 컨트롤을 Masterpage 의 중앙 왼쪽에 위치시켜 컨텐츠 메뉴를 쉽게 볼수 있도록 하자.

TreeView 가 사용할 DataSoure 를 선택하기 위해 Treeview 오른쪽 마우스를 눌러 show smart tag 메뉴를 선택하여

SitemapDataSource 를 선택한다.

사이트 맵에 관련된 컨트롤들을 사용할 준비가 모두 끝났다 .이제 실행( ctrl + F5 )해보도록 하자.

Treeview를 보게 되면 전체의 페이지가 모두 잘 나오는가?  실제로는 모두 잘나오면 않된다.(? ^^; ) 우리가 하고자

했던것은 권한에따라 보여지는 필더링된 웹사이트 맵이었기 때문이다. 정상적인 동작이었다면 로그인 되지 않은

지금의 Treview 의 상태는 AdminContent 페이지와 UserContent 페이지는 보여지지 않아야 한다. 만약 Admin Role의

계정으로 로그인 했을때 AdminContent 페이지가 보여져야 한다.

우리가 알아보고자 하는 Sitemap 의 필터링된 페이지 보기는 아쉽지만  정식 버전이 나올때까지 기다려야 할것 같다.

지금( 베타2)의 버전에서는 아직 지원하지 않고 있다.


SiteMapDataSource 을 추가한후에 사이트 맵과 별다른 설정없이 xml 형식의 sitemap 구조를 가져와 잘 동작하고 있다.
이 이유는 web.config 에서 sitemap 에 대한 설정을 기본적으로 XmlSiteMapProvider 을 지원하고 있기 때문이다.

Provider 형식을 지원하고 있기 때문에 현재의 설정과 같은 xml이 아닌 DB 형식의 Provider 등 다른 형식을 얼마든지

지원할수 있다는 얘기와 같다.


Provider 를 바꾸기 위한 sitemap의 설정 기본 형식은 다음과 같다.


[web.config]

 
<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">
  <providers>
    <add name="MyXmlSiteMapProvider"
      description="SiteMap provider which reads in .sitemap XML files."
      type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      siteMapFile="Myweb.sitemap" />
  </providers>
</siteMap>

 

사이트 맵에 대하여 그리고 사이트 맵을 사용하는 컨트롤에 대하여 아주 간단히 알아 보았다. sitemap 패스는

우리가 이동하는 Content 페이지에 따라 현재의 경로를 잘 표현해 주고 있고 treeview는 아직까진 필터링 되진
않지만 구조화된 페이지를 Tree형식으로 잘 보여주고 있다.
필자가 액세스 권한을 다뤄 본후 사이트 맵을 다룬것은 자신의 권한에 따라 다르게 보여진다는 것이었는데 이는
정식 버전에서나 확인해 볼수 있을것 같다.


정리

1. SitemapPath 를 사용하여 현재의 경로를 표현하여 보았다.
2. SiteMapDataSource 를 지원하도록 Provider 를 설정하는 형식에 의해 지원하는 알아보았다.
3. 기본 컨트롤로 포함된 Treeview 2.0을 간단히 사용해 보았다.
4. Sitemap이 어떤동작을 하는지 알수 있었고 노드를 구성하여 sitemap 을 표현하여 보았다.


참고

Extending ASP.NET 2.0 securityhttp://www.codeproject.com/aspnet/aspnet2security.asp


Plan Your Migration to the Visual Studio 2005 Navigation Controlshttp://msdn.microsoft.com/msdnmag/issues/04/06/NavigationControls/default.aspx

  작성자 : FreeCoder(프리코더)
  이메일 : admin@freecoder.pe.kr
  홈페이지 : http://www.freecoder.pe.kr/ 

'WEB > ASP / DotNet' 카테고리의 다른 글

ADSI 메서드 호출  (0) 2007/06/07
ADSI 속성 호출  (0) 2007/06/07
Asp.net 2.0 login  (0) 2007/06/07
닷넷 공부에 꽤 큰 도움이 되는 사이트  (0) 2007/06/07
AJAX.NET  (0) 2007/06/07
ASP.NET에서도 Include를 이용하자  (0) 2007/06/07
좀더 흥미로운 내용이 많이 있습니다.. HOME > WEB/ASP / DotNet를 확인하세요
TAG ,   
0 Trackback, 0 Comment, :
1  ... 320 321 322 323 324 325 326 327 328  ... 769 
Statistics Graph
Total : 557,403 Today : 33