로그인 처리하기
모든 페이지 접속시 우선 로그인 페이지를 띄우고 처리하도록 설정해보자.
1) 간단하게 하기위해 DB접속하여 ID/PW 체크하는 부분은 생략하고 ID가 testID일때 인증되도록 일단 처리해보자
web.config
<?xml version="1.0" encoding="utf-8"?> <!-- ASP.NET 응용 프로그램을 구성하는 방법에 대한 자세한 내용을 보려면 http://go.microsoft.com/fwlink/?LinkId=169433을 방문하십시오. --> <configuration> <system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <authentication mode="Forms"> <forms loginUrl="/Login.aspx" defaultUrl="~/MyPage.aspx"/> </authentication> <authorization> <deny users="?"/> </authorization> </system.web> </configuration> |
Login.aspx 디자인탭에서 디자인
Login.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls;
namespace WebApplication4 { public partial class WebForm5 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {
}
protected void btnLogin_Click(object sender, EventArgs e) { //if (IsAuthenticated(txtUserName.Text, txtUserPwd.Text)) if(txtUserName.Text == "testID") { FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true); } else { this.lblMessage.Text = "로그인 정보를 다시 확인해주세요"; } }
bool IsAuthenticated(string userID, string password) {
//DB에서 ID/PW값 조회하여 인증 처리하는 부분
return true; } } }
|
MyPage.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls;
namespace WebApplication4 { public partial class MyPgae : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Page.User.Identity.Name == "testID") { lblMessage.Text = Page.User.Identity.Name + "님 환영합니다"; } else { Response.Write("정상적인 경로로 접속해 주세요"); } }
protected void Button1_Click(object sender, EventArgs e) { FormsAuthentication.SignOut(); Response.Redirect(FormsAuthentication.LoginUrl); } } } |
정상적으로 입력
정상적으로 입력시 결과화면
잘못 입력시 결과화면
2) 이제 DB 연동을 해서 ID, PW가 DB에 있고 입력받은 값과 일치할때 로그인 시켜보자
일단 DB에 Member테이블을 생성하자(아래 예시는 MS SQL기준)
USE Northwind Go CREATE TABLE [dbo].[Member]( [UserId] [varchar](10) NOT NULL, [Password] [varchar](10) NOT NULL, [name] [varchar](10) NOT NULL, [title] [varchar](10) NOT NULL, [address] [varchar](50) NOT NULL, [iDate] [datetime] NOT NULL, CONSTRAINT [PK_Member] PRIMARY KEY CLUSTERED ( [UserId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] |
그리고 샘플 데이터를 넣자
insert into dbo.Member values ('taeil','1234','taeil','manager','SEOUL','20161201'); |
코드를 변경하자. 아래 파란색 부분을 변경하자
Login.aspx.cs
} using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls;
namespace WebApplication4 { public partial class WebForm5 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {
}
protected void btnLogin_Click(object sender, EventArgs e) { if (IsAuthenticated(txtUserName.Text, txtUserPwd.Text)) { FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true); } else { this.lblMessage.Text = "로그인 정보를 다시 확인해주세요"; } }
bool IsAuthenticated(string userID, string password) { String str = "server=localhost\\sqlexpress;database=NorthWind;uid=sa;pwd=!test1234"; SqlConnection conn = new SqlConnection(str); string sql = "select count(UserID) from Member where UserID = @UserID and Password = @Password"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@UserID", userID); cmd.Parameters.AddWithValue("@Password", password);
conn.Open(); int count = (int)cmd.ExecuteScalar(); conn.Close();
return count > 0; } } } |
MyPage.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls;
namespace WebApplication4 { public partial class MyPgae : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Page.User.Identity.Name != null) { lblMessage.Text = Page.User.Identity.Name + "님 환영합니다"; } }
protected void Button1_Click(object sender, EventArgs e) { FormsAuthentication.SignOut(); Response.Redirect(FormsAuthentication.LoginUrl); } } } |
이제 DB에 있는 ID,PW와 일치해야 로그인 처리되는것을 볼 수 있다.
댓글