2010-04-17 53 views
2

問候, 我爲我的asp.net mvc應用程序編寫了一個自定義MembershipProvider。我得到的用戶如下:MembershipProvider用戶標識

public override MembershipUser GetUser(string username, bool userIsOnline) 
    { 
     using (CPersistanceManager pm = new CPersistanceManager()) 
     { 
      pm.EnsureConnectionOpen(); 
      MembershipUser membershipUser = null; 
      COperator oper = pm.OperatorRepository.Get(username); 
      membershipUser = new MembershipUser(ApplicationName, 
               oper.Username, 
               oper.ROWGUID, 
               oper.Email, 
               string.Empty, 
               string.Empty, 
               oper.IsActive, 
               false, 
               DateTime.Today, 
               DateTime.Today, 
               DateTime.Today, 
               DateTime.Today, 
               DateTime.Today 
               ); 
      return membershipUser; 
     } 
    } 

我怎麼能然後檢索任何控制器中記錄的用戶ID(rowguid)?

回答

2

你可以做類似如下:

var userIdentity = HttpContext.Current.User.Identity; 
var user = GetUser(userIdentity.Name, userIdentity.IsAuthenticated); 

現在,你可以做任何你想用user對象

+0

是的,但那時,我將不得不每次從數據庫獲取數據。 – 2010-04-17 21:35:34

+0

您可以將用戶objetc保存在會話中,或者將其保存在請求的HttpContext中。 – uvita 2010-04-17 22:51:18

+0

對於有時使用用戶名作爲id和有時使用Rowguid沒有多大意義。更好地決定要將哪一個用作用戶標識符。 – mare 2010-04-18 12:55:00