2010-12-23 7 views
0

사용하기 쉬운 ASP.NET 응용 프로그램을위한 효율적이고 가볍고 안전한 인증 및 권한 부여 라이브러리가 없다고 상상할 수 없습니다. 예 귀하의 컨트롤러와 전망. 나는 수 많은 기사를 읽었으며 수천 건의 검색을 수행했지만 아직 찾지 못했습니다. 누구든지 그러한 도서관에 대해 알고 있습니까? 아니면 누군가가 자신을 만들고 공유 할 의향이 있습니까?안전하고 가볍고 사용하기 쉬운 asp.net 인증 시스템

ASP.NET 인증 시스템은 주로 UserId가 아니라 Username을 기반으로합니다. 나는 정말로 그것을 이해하지 못한다. 댓글이 달린 블로그를 만들고 싶다고 상상해보십시오. 사용자는 코멘트를 등록하고 게시 할 수 있습니다. 두 가지 잘 알려진 MVC 예제 (Nerddinner 및 MVC Music Store)는 기본 asp.net 인증 시스템 (membershipprovider/identy/principal 등)을 사용하고 Username을 사용하여 특정 객체에 속한 사용자를 저장합니다. "HostedBy"-field. 그것은 모든 관련 레코드를 변경하지 않고도 사용자 이름을 변경할 수 없습니다

  1. : 나에게

    ,이없는 아주 좋은 연습을 보인다.

  2. 왜 ID로 int가 아닌가요? 1600 만 사용자를 저장하려면 8 바이트 만 있으면됩니다. 사용자 이름을 8 바이트 문자로 제한하지 않으면 저장 공간 측면에서 효율성이 떨어집니다.

  3. 문자열 기반 조회는 정수 기반 조회보다 느리기 때문에 문자열 기반 관계는 그리 효율적이지 않습니다.

두면, 당신이 GUID가 아닌 int를 사용하려는 이유라고 추측하고 기억하는 것이 사실상 불가능하기 때문에, 상상할 수 수있는 몇 가지 방법으로 증가 보안; 그게 이유라면, 그건 나에게 좋다.

그러나 IIdentity 인터페이스가 사용자 이름을 사용할 수있게 만들고 사용자 ID를 사용하지 않는 이유는 여전히 남아 있습니다. UserId를 외래 키로 사용하면 예를 들어 어렵습니다. 현재 로그인 한 사용자의 모든 게시물 목록 가져 오기 : 사용자 이름에 속한 UserId를 가져 오려면 항상 데이터베이스 조회가 필요합니다.

인증 시스템이 다소 부풀어 오르는 것 같습니다. 내 생각에 최대 90 %의 사용자가 한 응용 프로그램에만 인증 시스템을 사용하게됩니다. 그렇다면 기본 기능을 만들어 여러 응용 프로그램을 제공 할 수있는 이유는 무엇입니까? (aspnet_Users의 응용 프로그램 열).

이런 일에 관심이 없다면 괜찮을 지 모르지만 1600 만 사용자를 대비하고 싶지 않습니까? 또는 50ms 미만의 페이지를 서버로 보내고 싶습니다. 그렇다면 왜 Microsoft는 기본 인증 시스템을 이렇게 구축 했습니까? 그것은 나에게 꽤 비 대한과 진부한 것처럼 보인다. (광산에 대답을하지 않습니다)

이와 관련된 질문 :

How can I access UserId in ASP.NET Membership without using Membership.GetUser()?

+1

이것은 질문이 아니라 호언 장담으로 이어집니다. ASP.NET MVC에 대해 특별히 이야기하고 있습니까? 그렇다면 질문을 그러한 것으로 태그해야합니다. 1600 만개의 레코드가 제대로 유지 관리되는 데이터베이스에는 너무 많지 않습니다. 50M 이하의 1,600 만 사용자에게 페이지를 게재하고 있다면 좋은 인프라/지원 팀이 한 명 있다는 것을 추측 할 수 있습니다. – Greg

답변

0

OK, 당신은 ASP.NET 회원 공급자를 싫어한다. 당신이 NHibernate 가게라면, 당신은 Ayende Rahien의 Rhino Security을 볼 수 있습니다.