Структура сущностей mvc: вход в систему с использованием базы данных - PullRequest
0 голосов
/ 09 сентября 2011

Я создал базу данных в Microsoft SQL Server Express.Мне нужно иметь возможность войти в приложение Mvc 2, используя мою базу данных (а не ту, которая существует в AcountController, что означает MembershipService)

Мне просто нужно заменить MemeberAhipService на мою базу данных.Как я могу это сделать (я использую код структуры лица в первую очередь).Мне не нужно создавать модель в визуальной студии.У меня есть usermodel, userContext: Db.Я думаю, что мне нужно также хранилище.Может кто-нибудь показать мне пример, сказать мне шаги?

1 Ответ

1 голос
/ 09 сентября 2011

Вы можете создать свой собственный сервис Membership.

Пример:

Новые 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;

                }
            }

        }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...