0
내 프로젝트에서 로그인을 구현합니다.
페이지 login.aspx 페이지에는 다음이 포함web.config와 관련없는 표준 로그인을 만드는 방법은 무엇입니까?
<asp:Login ID="MainLogin" runat="server" onloggingin="MainLogin_LoggingIn"></asp:Login>
서버 측에서이 페이지 : 내가 세션 변수에 쓰기 나중에 필요할
protected void MainLogin_LoggingIn(object sender, LoginCancelEventArgs e)
{
if (FormsAuthentication.Authenticate(MainLogin.UserName, MainLogin.Password))
{
FormsAuthentication.RedirectFromLoginPage(MainLogin.UserName, MainLogin.RememberMeSet);
if (FormsAuthentication.Authenticate(MainLogin.UserName, MainLogin.Password))
{
SqlConnection myConnection = new SqlConnection(DBConnection.GetConnectionString());
SqlCommand myCommand = new SqlCommand("SELECT * FROM Users WHERE [email protected] and [email protected]", myConnection);
myCommand.Parameters.AddWithValue("login", MainLogin.UserName);
myCommand.Parameters.AddWithValue("pass", MainLogin.Password);
myCommand.Connection.Open();
SqlDataReader Reader = myCommand.ExecuteReader();
while (Reader.Read())
{
Session["curUserRole"] = Reader["role"].ToString();
Session["curUserLogin"] = MainLogin.UserName;
Server.Transfer(Request.Url.LocalPath);
FormsAuthentication.RedirectFromLoginPage(MainLogin.UserName, MainLogin.RememberMeSet);
return;
}
//Reader.Close();
//myCommand.Connection.Close();
//myConnection.Close();
}
else {
}
}
변수를. Web.config의에 나는이 :
<authentication mode="Forms">
<forms loginUrl="Login.aspx">
<credentials passwordFormat="Clear">
<user name="Admin" password="sa" />
</credentials>
</forms>
</authentication>
<authorization>
<allow roles="Admin"/>
<deny users="?"/>
</authorization>
그래서 내가 로그인 입력 - "관리자"를하고 통과 - 항목의 사용자를 찾을 경우 "SA는"다음은 Web.config의에 확인,이 데이터베이스에이 항목을 확인, 데이터베이스에서 항목 만 확인하고로드 페이지가 하나라도 있으면 Start.log를 다시로드하십시오. 당신이 원하는 것처럼
정말 확실하지 사용자 이름은 DB에서 암호화되고 일반 텍스트에서는 암호화되지 않은 단어를 전달합니다. 에서 기본 폼 인증을 시도하고있는 것입니다. 이것이 맞습니다. 또한 세션 객체에 값을 할당하기 전에 DB 쿼리에서 반환 된 값이 있는지 확인하지 않습니다. 이것은 모두 우리가 모두 부정적인 가정이라고 가정합니다. – MethodMan
Do 암호를 일반 텍스트로 저장하지 마십시오. 기본 제공 SqlMembershipProvider를 사용해야합니다. – SLaks
지금 일반 텍스트로 암호화하고 있습니다. 나중에 해당 사용자 유형으로 DB에서 암호화 된 패스 또는 로그인을 관리 할 수 있습니다. Bu 실제로 web.confog에 그 중 하나를 쓸 필요가 없습니다 –