0

我已經在Microsoft sql server express中創建了一個數據庫。我需要能夠登錄Mvc 2應用程序,使用我的數據庫(不是現有的AcountController意思MembershipService)mvc實體框架:使用數據庫登錄

我只需要用我的數據庫替換MemeberAhipService。我該怎麼做(我首先使用實體​​框架代碼)。我不需要在visual studio中創建模型。我有usermodel,userContext:Db。我想我也需要知識庫。任何人都可以給我一個例子,告訴我的步驟?

回答

1

您可以創建自己的MembershipService。

例子:

新MembershipService.cs(或任何你想要的)

 
public class MembershipService 
{ 
    public bool IsUserValid(string username, string password) 
    { 
     var db = new DatabaseContext(); 
     var user = db.GetUser(username, password); 
     // Or however you want to get your data, via Context or Repository 
     return (user != null); 
    } 
} 

新FormsClass.cs

 
public class FormService 
{ 
    public void SignIn(string username, List&ltstring> roles) 
    { 

      FormsAuthenticationTicket authTicket = new 
          FormsAuthenticationTicket(1,   // Version 
          username,        // Username 
          DateTime.Now,       // Creation 
          DateTime.Now.AddMinutes(30),   // Expiration 
          false,         // Persistent 
          string.Join(",", roles.ToArray()));  // Roles 

      string encTicket = FormsAuthentication.Encrypt(authTicket); 
      HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)); 

      GenericIdentity id = new GenericIdentity(username); 
      HttpContext.Current.User = new GenericPrincipal(id, roles.ToArray()); 
    } 
} 

在Global.asax中:

 
     protected void Application_PostAuthenticateRequest(object sender, EventArgs e) 
     { 
      HttpCookie authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName]; 
      if (authCookie != null) 
      { 
       string encTicket = authCookie.Value; 
       if (!String.IsNullOrEmpty(encTicket)) 
       { 
        FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(encTicket); 
        FormsIdentity id = (FormsIdentity)Context.User.Identity; 
        var roles = ticket.UserData.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 

        GenericPrincipal prin = new GenericPrincipal(id, roles); 
        HttpContext.Current.User = prin; 

       } 
      } 

     } 

+0

THX很多。我會盡力做到這一點。我在mvc中也是新的實體框架。你有一些鏈接,我可以閱讀更多關於存儲庫或從數據庫登錄嗎? – studentsss

+0

然後公共IMembershipService MembershipService {get;組; }將變成:public MembershipService {get;組; } – studentsss

+0

然後** public IMembershipService MembershipService {get;組; } **將變成:** public MembershipService {get;組; } **。在這個類中,我們將擁有屬性**用戶名**,**密碼**? – studentsss

相關問題