ASP.NET AJAX에서 프로필 정보 사용
업데이트: 2007년 11월
ASP.NET 프로필 웹 서비스를 사용하면 응용 프로그램에서 ASP.NET 프로필 응용 프로그램 서비스를 사용할 수 있습니다. 이 항목에서는 ECMAScript(JavaScript) 코드를 사용하여 브라우저에서 응용 프로그램 프로필 서비스를 호출하는 방법을 보여 줍니다.
프로필 정보를 사용하려면 사용자가 먼저 웹 사이트에서 프로필 서비스를 설정해야 합니다. 이렇게 해야 프로필 서비스를 웹 서비스로 사용할 수 있습니다. 프로필 웹 서비스가 설정되면 클라이언트 스크립트 Sys.Services.ProfileService 클래스의 메서드를 호출하여 해당 웹 서비스를 호출할 수 있습니다.
프로필 서비스 활성화
스크립트에서 프로필 서비스를 사용하려면 응용 프로그램의 Web.config 파일에서 다음 요소를 사용하여 프로필 서비스를 활성화해야 합니다.
<system.web.extensions>
<scripting>
<webServices
< profileService enabled="true" />
</webServices
</scripting>
</system.web.extensions>
기본적으로 어떤 프로필 속성도 사용할 수 없습니다. 클라이언트 응용 프로그램에서 사용할 수 있게 하려는 각 프로필 속성에 대해 profileService 요소의 readAccessProperties 특성에 속성 이름을 추가합니다. 이와 유사하게 클라이언트 응용 프로그램에서 보낸 데이터를 기반으로 설정할 수 있는 각 서버 프로필 속성에 대해 writeAccessProperties 특성에 속성 이름을 추가합니다. 다음 예제에서는 개별 속성을 노출하고 클라이언트 응용 프로그램에서 해당 속성을 읽고 쓸 수 있는지 여부를 설정하는 방법을 보여 줍니다.
<profileService enabled="true"
readAccessProperties="Backgroundcolor,Foregroundcolor"
writeAccessProperties=" Backgroundcolor,Foregroundcolor"/>
다음 예제와 같은 구문을 사용하여 profile 섹션에서 프로필 속성을 정의합니다. 그룹화된 속성의 경우 group 요소를 사용합니다.
<system.web>
<profile enabled="true">
<add name=" Backgroundcolor" type="System.String"
defaultValue="white" />
<add name=" Foregroundcolor" type="System.String"
defaultValue="black" />
<properties>
<group name="Address">
<add name="Street" type="System.String" />
<add name="City" type="System.String"/>
<add name="PostalCode" type="System.String" />
</group>
</properties>
</profile>
</system.web>
자세한 내용은 방법: ASP.NET AJAX에서 ASP.NET 서비스 구성을를 참조하십시오.
예제
다음 예제에서는 클라이언트 스크립트의 프로필 서비스를 사용하는 방법을 보여 줍니다. 이 예제는 ScriptManager 컨트롤을 포함하는 ASP.NET 웹 페이지로 구성되어 있습니다. 이 컨트롤이 페이지에 포함되어 있으면 페이지의 모든 클라이언트 스크립트에서 자동으로 Sys.Services.AuthenticationService 개체를 사용할 수 있습니다.
페이지에는 이름이 OnClickLogin인 관련 이벤트 처리기가 있는 로그인 단추가 있습니다. 메서드의 코드에서 AuthenticationService 개체의 login 메서드를 호출합니다.
로그인한 후 Sys.Services.ProfileService 개체의 load 메서드를 호출하여 현재 사용자에 대한 프로필을 로드하는 loginComplete 콜백 함수가 호출됩니다.
프로필 정보는 사용자가 로그인한 후 설정할 수 있는 배경색 및 전경색으로 구성되어 있습니다. 배경색 및 전경색은 사용자가 Web.config 파일에서 설정해야 하는 프로필 속성입니다. 이러한 속성을 정의하려면 다음 요소를 응용 프로그램의 Web.config 파일에 추가합니다.
<profile enabled="true">
<properties>
<add name="Backgroundcolor" type="System.String"
defaultValue="white"/>
<add name="Foregroundcolor" type="System.String"
defaultValue="black"/>
</properties>
</profile>
예제 코드에서는 로드 및 저장 메서드에 대한 완료된 비동기 콜백 함수를 제공합니다. 또한 로드 및 저장 메서드에 대해 실패한 콜백 함수를 추가할 수 있습니다.
참고: |
---|
예제를 실행하기 전에 응용 프로그램의 멤버 자격 데이터베이스에 정의된 사용자가 한 명 이상인지 확인하십시오. 기본 SQL Server Express Edition 데이터베이스에서 사용자를 만드는 방법에 대한 자세한 내용은 ASP.NET AJAX에서 폼 인증 사용을 참조하십시오. |
var setProfileProps;
function pageLoad()
{
var userLoggedIn =
Sys.Services.AuthenticationService.get_isLoggedIn();
// alert(userLoggedIn);
profProperties = $get("setProfileProps");
passwordEntry = $get("PwdId");
if (userLoggedIn == true)
{
LoadProfile();
GetElementById("setProfProps").style.visibility = "visible";
GetElementById("logoutId").style.visibility = "visible";
}
else
{
DisplayInformation("User is not authenticated.");
}
}
// The OnClickLogout function is called when
// the user clicks the Logout button.
// It logs out the current authenticated user.
function OnClickLogout()
{
Sys.Services.AuthenticationService.logout(
null, OnLogoutComplete, AuthenticationFailedCallback,null);
}
function OnLogoutComplete(result,
userContext, methodName)
{
// Code that performs logout
// housekeeping goes here.
}
// This is the callback function called
// if the authentication failed.
function AuthenticationFailedCallback(error_object,
userContext, methodName)
{
DisplayInformation("Authentication failed with this error: " +
error_object.get_message());
}
// Loads the profile of the current
// authenticated user.
function LoadProfile()
{
Sys.Services.ProfileService.load(null,
LoadCompletedCallback, ProfileFailedCallback, null);
}
// Saves the new profile
// information entered by the user.
function SaveProfile()
{
// Set background color.
Sys.Services.ProfileService.properties.Backgroundcolor =
GetElementById("bgcolor").value;
// Set foreground color.
Sys.Services.ProfileService.properties.Foregroundcolor =
GetElementById("fgcolor").value;
// Save profile information.
Sys.Services.ProfileService.save(null,
SaveCompletedCallback, ProfileFailedCallback, null);
}
// Reads the profile information and displays it.
function LoadCompletedCallback(numProperties, userContext, methodName)
{
document.bgColor =
Sys.Services.ProfileService.properties.Backgroundcolor;
document.fgColor =
Sys.Services.ProfileService.properties.Foregroundcolor;
}
// This is the callback function called
// if the profile was saved successfully.
function SaveCompletedCallback(numProperties, userContext, methodName)
{
LoadProfile();
// Hide the area that contains
// the controls to set the profile properties.
SetProfileControlsVisibility("hidden");
}
// This is the callback function called
// if the profile load or save operations failed.
function ProfileFailedCallback(error_object, userContext, methodName)
{
alert("Profile service failed with message: " +
error_object.get_message());
}
// Utility functions.
// This function sets the visibilty for the
// area containing the page elements for settings
// profiles.
function SetProfileControlsVisibility(currentVisibility)
{
profProperties.style.visibility = currentVisibility;
}
// Utility function to display user's information.
function DisplayInformation(text)
{
document.getElementById('placeHolder').innerHTML +=
"<br/>"+ text;
}
function GetElementById(elementId)
{
var element = document.getElementById(elementId);
return element;
}
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
<%@ Page Language="VB" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
<title>Using Profile Service</title>
<style type="text/css">
body { font: 11pt Trebuchet MS;
padding-top: 72px;
text-align: center }
.text { font: 8pt Trebuchet MS }
</style>
</head>
<body>
<form id="form1" >
<asp:ScriptManager ID="ScriptManagerId">
<Scripts>
<asp:ScriptReference Path="Profile.js" />
</Scripts>
</asp:ScriptManager>
<h2>Profile Service</h2>
<p>
You must log in first to set or get profile data.
Create a new user, if needed. <br /> Refer to the Authentication example.
</p>
<div id="loginId" style="visibility:visible">
<table id="loginForm">
<tr>
<td>User Name: </td>
<td><input type="text"
id="userId" name="userId" value=""/></td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password"
id="userPwd" name="userPwd" value="" /></td>
</tr>
<tr>
<td><input type="button"
id="login" name="login" value="Login"
onclick="OnClickLogin()" /></td>
</tr>
</table>
</div>
<div id="setProfProps" style="visibility:hidden">
<input type="button"
value="Set Profile Properties"
onclick="SetProfileControlsVisibility('visible')"/>
</div>
<div id="placeHolder" style="visibility:visible" />
<br />
<input id="logoutId" type="button"
value="Logout" style="visibility:hidden"
onclick="OnClickLogout()" />
<div id="setProfileProps" style="visibility:hidden">
<table>
<tr>
<td>Foreground Color</td>
<td><input type="text" id="fgcolor"
name="fgcolor" value=""/></td>
</tr>
<tr>
<td>Background Color</td>
<td><input type="text" id="bgcolor"
name="bgcolor" value="" /></td>
</tr>
<tr>
<td><input type="button"
id="saveProf" name="saveProf"
value="Save Profile Properties"
onclick="SaveProfile();" /></td>
</tr>
</table>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>Using Profile Service</title>
<style type="text/css">
body { font: 11pt Trebuchet MS;
padding-top: 72px;
text-align: center }
.text { font: 8pt Trebuchet MS }
</style>
</head>
<body>
<form id="form1" >
<asp:ScriptManager ID="ScriptManagerId">
<Scripts>
<asp:ScriptReference Path="Profile.js" />
</Scripts>
</asp:ScriptManager>
<h2>Profile Service</h2>
<p>
You must log in first to set or get profile data.
Create a new user, if needed. <br />
</p>
<div id="setProfProps" style="visibility:visible">
<input type="button"
value="Set Profile Properties"
onclick="SetProfileControlsVisibility('visible')"/>
</div>
<div id="placeHolder" style="visibility:visible" />
<br />
<input id="logoutId" type="button"
value="Logout" style="visibility:hidden"
onclick="OnClickLogout()" />
<div id="setProfileProps" style="visibility:hidden">
<table>
<tr>
<td>Foreground Color</td>
<td><input type="text" id="fgcolor"
name="fgcolor" value=""/></td>
</tr>
<tr>
<td>Background Color</td>
<td><input type="text" id="bgcolor"
name="bgcolor" value="" /></td>
</tr>
<tr>
<td><input type="button"
id="saveProf" name="saveProf"
value="Save Profile Properties"
onclick="SaveProfile();" /></td>
</tr>
</table>
</div>
</form>
</body>
</html>
참고 항목
작업
방법: ASP.NET AJAX에서 ASP.NET 서비스 구성