웹페이지 보안
ASP.NET 웹 페이지 - WebSecurity 개체
설명
WebSecurity 개체 는 ASP.NET 웹 페이지 응용 프로그램에 대한 보안 및 인증을 제공합니다.
WebSecurity 개체를 사용하면 사용자 계정 생성, 사용자 로그인 및 로그아웃, 비밀번호 재설정 또는 변경 등 다양한 보안 관련 기능을 사용할 수 있습니다.
WebSecurity 개체 참조 설명서 - Properties
Property | Description |
---|---|
CurrentUserId | 현재 로그인된 사용자의 ID를 가져옵니다. |
CurrentUserName | 현재 로그인한 사용자의 이름을 가져옵니다. |
HasUserId | 현재 사용자 ID가 있으면 true를 반환합니다. |
IsAuthenticated | 현재 사용자가 로그인되어 있으면 true를 반환합니다. |
WebSecurity 개체 참조 설명서 - 메서드
Method | 설명 |
---|---|
ChangePassword() | 지정된 사용자의 비밀번호를 변경합니다. |
ConfirmAccount() | 계정 확인 토큰을 사용하여 계정을 확인하세요. |
CreateAccount() | 새 사용자 계정을 만듭니다. |
CreateUserAndAccount() | 새 사용자 계정을 만듭니다. |
GeneratePasswordResetToken() | 사용자가 비밀번호를 재설정할 수 있도록 이메일로 사용자에게 보낼 수 있는 비밀번호 재설정 토큰을 생성합니다. |
GetCreateDate() | 특정 멤버의 생성 시간을 가져옵니다. |
GetPasswordChangeDate() | 비밀번호 변경 날짜와 시간을 가져옵니다. |
GetUserId() | 사용자 이름을 기준으로 사용자 ID를 가져옵니다. |
InitializeDatabaseConnection() | WebSecurity 시스템(데이터베이스)을 초기화합니다. |
IsConfirmed() | 사용자가 확인되었는지 확인하세요. 확인되면 true를 반환합니다. (예를 들어 이메일을 통한 확인도 가능합니다.) |
IsCurrentUser() | 현재 사용자의 이름이 지정된 사용자 이름과 일치하는지 확인합니다. 일치하는 것이 있으면 true를 반환합니다. |
Login() | 인증 토큰을 설정하고 사용자를 로그인합니다. |
Logout() | 인증 토큰을 제거하고 사용자를 로그아웃합니다. |
RequireAuthenticatedUser() | 사용자가 인증되지 않은 경우 HTTP 상태를 401(권한 없음)로 설정합니다. |
RequireRoles() | 현재 사용자가 지정된 역할의 구성원이 아닌 경우 HTTP 상태를 401(권한 없음)로 설정합니다. |
RequireUser() | 현재 사용자가 지정된 사용자 이름을 가진 사용자가 아닌 경우 HTTP 상태를 401(권한 없음)로 설정합니다. |
ResetPassword() | 비밀번호 재설정 토큰이 유효하면 사용자의 비밀번호를 새 비밀번호로 변경하세요. |
UserExists() | 지정된 사용자가 존재하는지 확인하세요. |
기술 데이터
Name | Value |
---|---|
Class | WebMatrix.WebData.WebSecurity |
Namespace | WebMatrix.WebData |
Assembly | WebMatrix.WebData .dll |
WebSecurity 데이터베이스 초기화
코드에서 WebSecurity 개체를 사용하려면 먼저 WebSecurity 데이터베이스를 생성하거나 초기화해야 합니다.
웹 루트 디렉터리에 _AppStart.cshtml이라는 페이지를 만듭니다(이미 존재하는 경우 페이지를 직접 편집하세요).
다음 코드를 파일에 복사합니다.
_AppStart.cshtml
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true);
}
위 코드는 웹사이트(애플리케이션)가 시작될 때마다 실행됩니다. WebSecurity 데이터베이스를 초기화합니다.
"Users"는 WebSecurity 데이터베이스(Users.sdf)의 이름입니다.
"UserProfile"은 사용자 프로필 정보가 포함된 데이터베이스 테이블의 이름입니다.
"UserId"는 사용자 ID(기본 키)가 포함된 열의 이름입니다.
"Email"은 사용자 이름이 포함된 열의 이름입니다.
마지막 매개변수 true는 부울 값으로, 사용자 구성 테이블과 멤버십 테이블이 없으면 테이블이 자동으로 생성됨을 나타냅니다. 테이블을 자동으로 생성하지 않으려면 매개변수를 false로 설정해야 합니다.
true는 데이터베이스 tables를 자동으로 생성한다는 뜻이지만 데이터베이스가 자동으로 생성되지는 않습니다. 따라서 데이터베이스가 존재해야 합니다. |
WebSecurity 데이터베이스
UserProfile 테이블은 각 사용자, 사용자 ID(기본 키) 및 사용자 이름(이메일)에 대한 레코드를 저장하기 위해 생성됩니다.
UserId | |
---|---|
1 | john@johnson.net |
2 | peter@peterson.com |
3 | lars@larson.eut |
Membership 테이블에는 회원 정보가 포함되어 있습니다. , 예를 들어 user 가 Create 이고, 회원의 인증 여부, 회원의 인증 시기 등을 확인할 수 있습니다.
세부 사항은 다음과 같습니다(일부 열은 표시되지 않음):
User Id | Create Date | Confirmation Token | Is Confirmed | Last Password Failure | 비밀번호 | 비밀번호 변경 |
---|---|---|---|---|---|---|
1 | 12.04.2012 16:12:17 | NULL | True | NULL | AFNQhWfy.... | 12.04.2012 16:12:17 |
참고: 모든 열과 내용을 보려면 데이터베이스를 열고 내부의 각 테이블을 살펴보세요.
간단한 멤버십 구성
WebSecurity 개체를 사용할 때 사이트가 ASP.NET 웹 페이지 멤버십 시스템 SimpleMembership을 사용하도록 구성되지 않은 경우 오류가 보고될 수 있습니다.
호스팅 제공업체의 서버 구성이 로컬 서버 구성과 다를 경우에도 오류가 보고될 수 있습니다. 이 문제를 해결하려면 웹 사이트의 Web.config 파일에 다음 요소를 추가하세요.
<add key="enableSimpleMembership" value="true" />
</appSettings>