2009-03-31 5 views
19

.net 회원 자격에 대한 대안이 있습니까?.Net 회원 자격 대안

매우 제한적입니다.

  • 간 전환 사용자 이름은 쉽게 변경할 수 있습니다. 새 사용자를 만들고 필드를 복사해야하지만 기본 키를 잃거나 사용자 테이블을 직접 편집해야합니다.

  • 추가 프로필 필드는 하나의 blob로 함께 저장됩니다.

답변

13

ASP.Net 멤버십은 공급자 모델을 사용합니다. 즉, provider contract을 따르는 한 자신 만의 회원 공급자를 구현하거나 기존 공급자를 상속하거나 확장 할 수 있습니다.

플러스 하나는 기존의 대안에 대해 묻기보다는 스스로 새로운 것을 만들려고 노력합니다.

0

사용자 이름 변경은 CreateNewUser() 메서드를 사용하고 현재 사용자를 기준으로 적절한 필드를 채운 다음 현재 사용자를 삭제하면 쉽게 수행 할 수 있습니다.

프로필 필드는 .NET 멤버 자격 공급자 모델의 일부는 아니지만 프로필 공급자의 일부입니다. 이것은 매우 논쟁의 여지가있는 주제이며 대부분의 생산 기계에서 올바른 방법은 메모리 호깅 얼룩이 라기보다는 프로파일 영역을 저장하는 Table Profile Provider과 같은 더 나은 프로파일 제공자 솔루션을 사용하는 것입니다 . 또는 자신의 프로필 공급자를 쉽게 굴릴 수 있으며 instructions here을 확인하십시오.

.NET 멤버쉽 대안이 있지만 대부분 버그이거나 작은 기능 세트가 있습니다. 2 달 동안 하나를 기반으로 발전하고 나서 필요한 모든 기능을 지원하지 않는다는 것을 깨닫게됩니다. .NET 멤버쉽은 입증 된 솔루션이므로 그만큼 자주 사용됩니다.

+2

새로운 사용자가 마우스 오른쪽, 그것을 위해 새로운 ID를 생성합니다을 작성하는 경우? 사용자가 이미 다른 테이블에 의해 참조 된 경우 좋지 않습니다. – XOR

+0

아니요,하지만 사용자 이름을 "변경"하기위한 방법으로 수정하는 것이 매우 간단합니다. – JoshJordan

0

프로필에 대해서는 두 개의 alternatives out there이 있습니다. 이 두 테이블을 사용하거나 저장 프로 시저를 호출 할 수 있습니다. 물론 직접 구현할 수도 있습니다. 필자는 개인적으로 프로필 공급자를 사용하는 것에 질려했으며 내 코드에서 프로필을 다루는 것이 제어하고 포함하기가 더 쉽다는 것을 알았습니다.

다른 문제는 자체 공급자를 구현할 수도 있습니다. Microsoft는 SQL Providers에 소스 코드를 공개하여 시작 지점을 제공 할 수 있습니다.

+0

프로필 공급자 모델을 사용하지 않은 이유를 설명해 주시겠습니까? – kseen

2

ASP.NET 멤버 자격 모델은 공급자를 기반으로 구축되었으므로 여러 가지 대안을 사용할 수 있습니다.

기본적으로 사용자에게는 GUID이며 데이터베이스의 기본 키가 있으므로 사용자가 원하는 경우 사용자 이름을 변경하기 위해 무언가를 쓸 수 있어야합니다.

프로필 측면에서 그렇다. 기본 BLOB는 상당히 성가시다. 프로필을 테이블에 매핑하거나 비교적 빠르게 roll your own을 매핑하는 SQL Table Profile Provider을 살펴볼 수 있습니다.

+0

@ Dan - UserID를 사용하면 데이터베이스 테이블 aspnet_Membership 및 aspnet_users에서 PK를 참조하고 있는데 실제로는 UserId라고합니다. –

8

나는 여기에 나의 대안을 나열 할 것이다. 나는 내 자신의 인증 라이브러리를 굴려서 공개적으로 출시 될만큼 굉장하다고 생각한다. 그래서 그렇게했다. 그것은 당신의 방식으로 그리고 전반적으로 벗어나지 않도록 고안되었습니다. 그것은 매우 단순합니다. 나는 상자 사용자 컨트롤을 많이 제공하지 않지만, 내장 된 사용자 컨트롤이 사용 된 적이없는 대부분의 웹 사이트에서는 사용되지 않습니다.그래서 더 유연한 사용자 컨트롤을 만드는 대신, 나는 자신의 로그인 컨트롤 등을 만들기 위해 뇌를 죽게 만드는 대신에 간단하게 결정했다.

프로젝트는 빠르고 안전하고 간결한 인증 또는 줄여서 FSCAuth라고합니다. BSD 라이센스입니다. Binpress 또는 Bitbucket

유연한 "UserStore"모델 (양식의 공급자와 동일)을 사용하면 원하는대로 데이터베이스를 구성 할 수 있습니다. 일반 텍스트 파일, XML, MongoDB, Sql Server 등을 지원할 수 있습니다.

  • 비 저장 인증 시스템 :

    여기에 내가 특히 폼 인증을 통해 탁월한 생각하는 것들의 목록입니다. 데이터베이스 또는 메모리에서 사용자 세션을 추적 할 필요는 없습니다. 이렇게하면 인증 코드를 거의 변경하지 않고도 여러 서버로 확장 할 수 있습니다.

  • 각 사용자마다 고유 한 ID로 아무것도 사용하지 마십시오. 맞습니다. 더 이상 GUID가 없습니다! 문자열에 들어갈 수있는 것은 무엇이든간에 공정한 게임입니다.
  • HTTP 기본 인증이 구워졌습니다. 원하는 페이지 (또는 전 세계적으로)에만 기본 인증을 사용할 수 있으며 일반적인 쿠키 기반을 사용하는 것처럼 동일한 호출을 할 수 있습니다 인증
  • 불안정하게 만들지 마십시오. 그것이 작동하는 방법 때문에 나는 실제로 인증을하기 위해 최종 사용자에게 가능한 한 적은 코어 코드를 남겨 둡니다, 그것은 매우 안전하고 여러분이 정말로 그것을 깨뜨리지 않는 한 그런 식으로 남아있을 것입니다. 저는 쿠키, HTTP Basic Auth 및 모든 해싱을 처리합니다. FSCAuth에 데이터베이스를 넣기 만하면됩니다.
  • 해시에 대한 BCrypt 지원은 간단합니다. How to do it.. 폼 인증에서는 내가 그것 또한 부족한 물론

을 :), 나는 정적 파일을 인증

  • 부족한 몇 가지를 포함합니다 공정하게 좋아 almost not possible
  • 입니다 IIS 6은 불가능합니다 (아직)
  • (아직) 무차별 대폭 예방은 없습니다. 즉, 동일한 사람이 2 초 내에 로그인 페이지를 200 번 누르지 않도록해야합니다.
  • 그것은 ASP.Net에 내장 아니에요
  • 없음 Windows 또는 Passport 인증 (아무 계획 이제까지 추가하는)
관련 문제