magento 관리자 패널 계정을 만드는 방법
원래 사용자 인증을 위해 양식 인증을 사용하는 것이 가장 일반적인 방법이지만, 그 방법을 체계적으로 설명하는 기사는 거의 없습니다. 인터넷의 대부분의 기사에서는 특정 원리의 사용이나 구현을 소개합니다. , 그리고 더 많은 친구들이 처음부터 끝까지 사용자 등록 및 로그인을 완료하는 방법을 묻는 메시지를 게시했습니다. 따라서 이 기사에서는 실제 사례를 사용하여 양식 인증을 기반으로 구현하는 방법을 소개할 계획입니다.
사용자 등록(암호화된 비밀번호 저장 포함)
사용자 로그인(비밀번호 확인 포함, 보안 쿠키 설정)
사용자 엔터티 교체(HttpContext.User 유형으로 자신의 유형 사용)
양식 인증 및 기타 콘텐츠의 원칙은 이 문서의 범위에 포함되지 않습니다. "양식 인증", "양식 인증", "양식 인증"과 같은 키워드를 엔진에 입력하여 검색하면 더 많은 리소스를 볼 수 있습니다. 이 기사에서는 실용적인 관점에서 이 기술을 사용하는 방법만 소개합니다.
멤버십을 사용하지 마세요
이 문서에 설명된 구현은 ASP.NET 2.0에서 제공하는 멤버쉽 기능에 의존하지 않습니다. 이는 주로 Membership을 사용하는 경우 aspnet_regsql.exe 유틸리티를 사용하여 데이터베이스를 구성해야 하고, 그렇지 않으면 사용자 지정 MembershipProvider를 직접 작성해야 하기 때문입니다.
aspnet_regsql.exe를 사용하여 데이터베이스를 구성하면 데이터베이스에 실제로 필요하지 않은 테이블이나 필드가 많이 생성됩니다. 또한 더 중요한 것은 기본 SqlMembershipProvider가 ApplicationID 열을 많은 데이터 테이블에 추가한다는 것입니다. 원래 의도는 여러 응용 프로그램의 모든 사용자를 하나의 라이브러리에 배치하되 서로 격리하는 것일 수 있습니다. 그러나 현실은 각 애플리케이션이 자체 데이터베이스에 사용자 데이터를 저장한다는 것입니다. 따라서 이 ApplicationID를 도입하면 사용자를 조회할 때마다 추가 조건이 추가됩니다.
반면에 MembershipProvider를 직접 구현하는 것을 고려하는 경우 엄청난 작업량으로 인해 얻는 이득이 더 큽니다.
그러나 멤버십을 사용하지 않으면 ASP.NET 2.0의 로그인과 같은 새로운 컨트롤의 편리함을 누릴 수 없습니다.
양식 인증 관련 구성
web.config 파일에서
일반적인
name=".ASPXAUTH"< / p> loginUrl="login.aspx" defaultUrl="default.aspx" protection="All" timeout="30 " path="/" requireSSL="false" SlidingExpiration="false" 활성화CrossAppRedirects="false" cookieless="UseDeviceProfile" domain="" /> 위 코드는 기본 설정을 사용합니다. 즉, 구성 속성 중 하나라도 위 코드와 일치하면 이 속성을 생략할 수 있습니다. 예를 들어 name - 쿠키의 이름. 양식 인증은 확인 후 쿠키에 사용자 자격 증명을 저장할 수 있습니다. 이름 속성은 쿠키의 이름을 결정합니다. 이 구성 값은 FormsAuthentication.FormsCookieName 속성을 통해 얻을 수 있습니다(FromsAuthentication 클래스는 나중에 소개됩니다). loginUrl - 로그인 페이지의 URL입니다. 이 구성 값은 FormsAuthentication.LoginUrl 속성을 통해 얻을 수 있습니다. FormsAuthentication.RedirectToLoginPage() 메서드가 호출되면 클라이언트 요청이 이 특성으로 지정된 페이지로 리디렉션됩니다. loginUrl의 기본값은 "login.aspx"입니다. 이는 이 특성 값이 제공되지 않더라도 ASP.NET이 사이트의 루트 디렉터리에서 login.aspx라는 페이지를 찾으려고 시도함을 나타냅니다. defaultUrl - 기본 페이지의 URL입니다. FormsAuthentication.DefaultUrl 속성을 통해 이 구성 값을 가져옵니다. 보호 - 쿠키 보호 모드, 가능한 값에는 모두(암호화와 데이터 확인을 동시에), 암호화(암호화만), 유효성 검사(데이터 확인만) 및 없음이 포함됩니다. 보안상의 이유로 이 속성은 일반적으로 없음으로 설정되지 않습니다. timeout - 쿠키 만료 시간. path - 쿠키의 경로입니다. 이 구성 값은 FormsAuthentication.FormsCookiePath 속성을 통해 얻을 수 있습니다. requireSSL - 양식 인증을 수행할 때 서버와 상호 작용하는 데 SSL이 필요한지 여부입니다. 이 구성 값은 FormsAuthentication.RequireSSL 속성을 통해 얻을 수 있습니다. slidingExpiration ——"탄력적 만료 시간"을 활성화할지 여부, 이 속성이 false로 설정되면 첫 번째 확인 후 시간 초과 시간이 경과한 후 쿠키가 만료됩니다. 이 속성이 true이면 쿠키가 시작됩니다. 마지막 요청부터 시간 초과가 만료될 때까지 만료되지 않습니다. 즉, 첫 번째 확인 후 시간 초과마다 최소 하나의 요청을 보내는 것이 보장되면 쿠키는 만료되지 않습니다. 이 구성 값은 FormsAuthentication.SlidingExpiration 속성을 통해 얻을 수 있습니다. enableCrossAppRedirects - 인증된 사용자를 다른 애플리케이션으로 리디렉션할 수 있는지 여부입니다. 이 구성 값은 FormsAuthentication.EnableCrossAppRedirects 속성을 통해 얻을 수 있습니다. 보안상의 이유로 이 속성은 일반적으로 항상 false로 설정됩니다. 쿠키리스 - 쿠키 사용 여부와 쿠키 동작을 정의합니다. 양식 인증은 두 가지 방법을 사용하여 세션에 사용자 자격 증명 정보를 저장합니다. 하나는 쿠키를 사용하는 것입니다. 즉, 브라우저는 요청이 전송될 때마다 서버에 쿠키를 제공합니다. 또 다른 방법은 사용자 자격 증명을 URL의 추가 쿼리 문자열로 서버에 전달하는 URI를 사용하는 것입니다. 이 속성에는 UseCookies(항상 쿠키 사용), UseUri(쿠키를 사용하지 않음, URI만 사용), AutoDetect(장치가 쿠키를 지원하고 브라우저에서 활성화된 경우에만 장치 및 브라우저 감지)의 네 가지 값이 있습니다. 쿠키가 있는 경우) 및 UseDeviceProfile(장치가 쿠키를 지원하는 경우에만 장치를 감지하고, 브라우저의 지원 여부에 관계없이 쿠키가 사용됩니다). 이 구성 값은 FormsAuthentication.CookieMode 속성을 통해 얻을 수 있습니다. FormsAuthentication.CookiesSupported 속성을 사용하여 현재 요청에 대한 사용자 자격 증명을 전달하는 데 쿠키가 사용되는지 여부를 확인할 수 있습니다. domain - 쿠키의 도메인입니다. 이 구성 값은 FormsAuthentication.CookieDomain 속성을 통해 얻을 수 있습니다. 위의 FormsAuthentication 클래스 FormsAuthentication 클래스는 양식 확인을 완료하고 사용자 로그인과 같은 추가 기능을 완료하는 데 도움을 주는 데 사용됩니다. 이 클래스는 system.web.dll 어셈블리의 System.Web.Security 네임스페이스에 있습니다. 일반적으로 이 클래스는 웹 사이트 프로젝트에서 직접 사용할 수 있습니다. 클래스 라이브러리 프로젝트에서 이 클래스를 사용하는 경우 system.web.dll을 참조하십시오. FormsAuthentication 클래스의 모든 속성은 이전 섹션에서 소개되었습니다. 이 섹션에서는 이 클래스에서 일반적으로 사용되는 몇 가지 메서드를 소개합니다. RedirectToLoginPage 메소드는 모든 페이지에서 로그인 페이지로 리디렉션하는 데 사용됩니다. 이 메소드에는 두 가지 오버로딩 메소드가 있습니다: public static void RedirectToLoginPage () public static void RedirectToLoginPage (string extraQueryString) 두 방법 모두 브라우저를 로그인 페이지로 리디렉션합니다(로그인 페이지의 URL은 RedirectToLoginPage는 일반적으로 로그인 페이지가 아닌 모든 페이지에서 호출됩니다. 리디렉션 외에도 이 메소드는 URL에 ReturnUrl 매개변수를 추가합니다. 이는 메소드가 호출될 때 페이지의 URL 주소입니다. 이는 로그인하기 전의 페이지로 자동으로 돌아갈 수 있도록 하기 위한 것입니다. RedirectFromLoginPage 메소드는 로그인 페이지에서 사전 로그인 페이지로 다시 이동하는 데 사용됩니다. 이 "사전 로그인" 페이지는 로그인 페이지에 액세스할 때 제공되는 ReturnUrl 매개변수에 의해 지정됩니다. ReturnUrl 매개변수가 제공되지 않으면(예를 들어 RedirectToLoginPage 메소드를 사용하는 대신 다른 방법을 사용하여 로그인 페이지로 리디렉션하거나 직접 액세스하는 경우) 메소드는 또한 RedirectFromLoginPage 메소드에는 두 가지 오버로드된 형식이 있습니다: public static void RedirectFromLoginPage (string userName, bool createPertantCookie) public static void RedirectFromLoginPage (string userName, bool createPertantCookie, string strCookiePath) userName 매개변수는 사용자 ID(예: 사용자 이름, 사용자 ID 등)를 나타냅니다. to "remember me" "; strCookiePath 매개변수는 쿠키 경로를 나타냅니다. 리디렉션을 완료하는 것 외에도 RedirectFromLoginPage 메소드는 암호화된 사용자 자격 증명(암호화 여부는 또한 FormsAuthentication에는 사용자 로그아웃을 완료하는 데 사용되는 SignOut 메서드도 있습니다. 원칙은 쿠키 또는 Uri에서 사용자 자격 증명을 제거하는 것입니다. 요약 자, 이제 마스터하는 데 필요한 모든 기본 지식을 갖추었습니다. 다음으로 사용자 등록, 로그인 및 기타 기능을 구현하겠습니다. 2 사용자 등록 및 로그인 이 부분부터 실제적이고 완전한 예제를 통해 사용자 등록 및 로그인을 구현하는 방법을 살펴보겠습니다. 등록 및 로그인을 소개하기 전에 먼저 사용자가 로그인했는지 확인하는 방법을 소개하고 다음 예제에 대한 몇 가지 기본 코드를 작성합니다. 사용자가 로그인했는지 확인합니다. 먼저 MasterPage.master와 같은 MasterPage를 웹 사이트 프로젝트에 추가합니다. 이 마스터 페이지의 ContentPlaceHolder 컨트롤 앞과 < asp:LinkButton ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click"> | 환영합니다. [ onclick="btnLogout_Click"> | 여기에는 pnlAnonymous, pnlLoggedin 및 pnlNavigate의 세 가지 패널 컨트롤이 제공됩니다. pnlAnonymous는 사용자가 로그인하지 않은 경우 "로그인" 및 "등록" 링크를 표시하는 데 사용됩니다. pnlLoggedin은 사용자 정보(예: 사용자 이름 및 사용자 개인 정보 페이지 링크 등)를 표시하는 데 사용되며 여기에는 사용자 이름만 표시됩니다. ) 사용자가 로그인하면 pnlNavigate 버튼이 항상 표시되며 이는 사이트 탐색 모음입니다. 이제 우리가 원하는 것은 사용자가 로그인했는지 확인하고 pnlAnonymous 및 pnlLoggedin 중 하나를 표시하는 것입니다. 여기서 ASP.NET 2.0 Membership을 사용하는 경우 LoginView, LoginName 및 LoginStatus와 같은 컨트롤을 사용하여 이러한 기능을 쉽게 구현할 수 있지만 Membership으로 인해 발생하는 크고 수많은 데이터베이스 개체를 견뎌야 하거나 더 많은 시간을 소비해야 합니다. 사용자 정의 MembershipPorvider를 작성합니다. 이 시리즈의 첫 번째 부분에서 소개한 것처럼 사용자가 이미 로그인되어 있는 경우 로그인한 사용자의 ID(일반적으로 사용자 이름)는 HttpContext.User.Identity.Name에서 얻을 수 있습니다. 그러나 사용자가 로그인하지 않은 경우 이 값은 빈 문자열입니다. 따라서 값이 빈 문자열인지 여부를 판단하여 해당 값은 사용자가 로그인했는지 여부가 됩니다.