2011-08-03 3 views
0

첫 번째 ASP.NET MVC 3 응용 프로그램에 폼 인증을 사용하고 있으므로 사이트에 로그인하는 데 사용되는 dbo.aspnet_Users 테이블과 관리하는 dbo.aspnet_Roles 및 dbo.aspnet_UsersInRoles 테이블이 있습니다. 역할과 역할 할당.사용자 테이블 ID 및 sqlmembershipprovider

DB는 SQL Server입니다.

은 또한이 같은 레이아웃 뭔가가 내 응용 프로그램의 데이터베이스에서 사용자 테이블을 가지고 :

사용자 ID PK가 외래 키 및 사용자의 목록으로 다양한 다른 테이블에 사용되는
UserID (PK, int, not null) 
Name (varchar(50), not null) 
Phone (varchar(45), null) 
Location (varchar(45), null) 

, 예를 들어, 특정 위치에서 가져온 것이 내 웹 사이트 페이지의 드롭 다운리스트 등에서 검색되어 표시됩니다.

연결이 끊어지는 것은 페이지에 로그온 할 때 사용자 별 목록 내 최신 요리법을 만들었고 사용자 드롭 다운 목록에서 자신을 선택하여 UserID를 얻을 수는 있었지만 사용자 ID를 얻으려면 로그인해야합니다. 디.

나는 이것을 위해 아주 좋은 해결책이 있는지 확신하지 못한다. 내가 가진 하나 개의 아이디어,

UserGUID(PK, uniqueidentifier, not null) 
UserID(PK, int, not null) 

다음 GUID를 검색 같은 (어떻게 아직 확인되지 않음) aspnet_Users 테이블의 GUID를 내 응용 프로그램의 사용자 테이블에서 내 응용 프로그램의 데이터베이스 매핑 사용자 ID의 조회 테이블을 만드는 것이 었습니다 그것을보고 관련된 사용자 ID를 사용하여 내가 어떤 사용자인지 "알"십시오. 나는 그것이 의미가 있기를 바랍니다.

누구나 비슷한 상황에 직면 했습니까? 어떻게 해결할 수 있니?


업데이트 :

내 현재의 접근 방식이 포함 내 응용 프로그램의 사용자 테이블에 UserGUID 열 (고유 식별자)를 추가하고 그래서 같은 보이는 BaseController 생성 :

public abstract class BaseController : Controller 
{ 
    public Guid UserGuid { get; set; } 
    public int UserID { get; set; } 

    protected BaseController() 
    { 
     try 
     { 
     UserGuid = (Guid)Membership.GetUser().ProviderUserKey; 
     var db = new IceCreamEntities(); 
     UserID = db.Users.Where(m => m.UserGUID == UserGuid).First().UserID; 
     } 
     catch (NullReferenceException) 
     { 
     UserGuid = Guid.Empty; 
     UserID = 0; 
     } 
    } 
} 

을 그리고 그들은 내가베이스 컨트롤러의 일부로 그 기능을 얻을 수 있도록 컨트롤러 대신 BaseController를 상속합니다. 그럼 내 컨트롤러 액션에서 나는이 작업을 수행 할 수있는 사용자 ID와 함께 필드에 입력해야 여기서

[HttpPost] 
public ActionResult Create(IceCreamFlavorViewModel viewmodel) 
{ 
    ... 

    flavor.CreatedBy = this.UserID; 

    ... 
} 

지금까지 확인을 작동하는 것 같다,하지만, 난 여전히 다른 사람들이이 문제를 해결할 방법에 관심이 있어요.

답변

2

내 mvc 응용 프로그램에서 동일한 기술을 사용하여 지난 1 년 동안 정상적으로 작동합니다. 그러나 개발 과정에서 그렇게 멀리 가지 않았다면 고려해 볼 수있는 또 다른 접근법이 있습니다. 시스템을 롤링하는 것보다 사용자 특정 정보를 저장하는 데 ProfileProvider을 사용하는 것이 좋습니다. PLZ 정보] 무하마드에 대한 다음 링크 http://odetocode.com/articles/440.aspx
http://www.vbforums.com/showthread.php?p=3352498
Implementing Profile Provider in ASP.NET MVC

+0


감사에서 봐, 나는 그들에 대해 살펴 보겠습니다. – itsmatt

+0

당신은 대부분 환영합니다 itsmatt –

관련 문제