0

私はMicrosoft SQL Server Expressでデータベースを作成しました。私は自分のデータベース(AcountControllerの意味でMemberhipServiceにあるものではなく)を使ってMvc 2アプリにログインする必要があります。mvcエンティティフレームワーク:データベースを使用したログイン

私はMemeberAhipServiceを自分のデータベースで置き換えるだけでいいです。どうすればいいのですか(私はエンティティフレームワークのコードを最初に使っています)。私はビジュアルスタジオでモデルを作成する必要はありません。私はusermodel、userContext:Dbを持っています。私はリポジトリも必要と思う。誰かが私にステップを教えてくれているかの例を見せてもらえますか?

答えて

1

独自のMembershipServiceを作成することができます。

例:Global.asaxの中

新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()); 
    } 
} 

 
     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

次に、public IMembershipService MembershipService {get;セット; }は単に次のようになります:public MembershipService {get;セット; } – studentsss

+0

次に** public IMembershipService MembershipService {get;セット; } **は**になります** public MembershipService {get;セット; } **。このクラスでは、** username **、** password **のプロパティを持ちますか? – studentsss

関連する問題