ASP.NET MVC персонализирано членство за начинаещи

Създавам собствен уебсайт и блог и искам за първи път само аз в базата данни (моето име и парола) и може би по-късно малко регистрация за други, но първо влезте само за мен и администрация с разрешение. Не искам да използвам членство от MS. Искам да опитам да създам свой собствен от самото начало, така че търся ръководство за начинаещи, но намерих големи ръководства с роли, права. Искам само малък пример с проверка на потребителско име, парола в база данни с данни за влизане. Благодаря за помощта Либор


person Libor Zapletal    schedule 15.09.2010    source източник
comment
Здравейте, избрахте ли вече начин за достъп до базата данни? (рамка на обекта, linq2sql, ado.net?)   -  person Michel    schedule 06.10.2010


Отговори (3)


Дори и да не искате да използвате хранилището на данни за членство и доставчик на роли, пак можете да използвате удостоверяването. Повярвайте ми, това е много по-лесно, отколкото да изградите свой собствен. Ето как работи:

Ще кажем, че вече имате настройка за потребителско хранилище за извличане на потребителското име и тяхната парола. За по-голяма простота ще се преструвам, че имате статичен клас, наречен DataLayer, който съдържа вашите методи за извличане на данни за извличане на информация от базата данни (или каквото и да е хранилище, което използвате).

Първо се нуждаете от начин да позволите на потребителя да влезе. Затова създайте страница с полета за потребителско име и парола. След това в метода за действие, който страницата публикува, за да настроите бърз оператор if:

    if (DataLayer.UserExists(userModel.Username))
    {
         User userFromDB = DataLayer.GetUser(userModel.Username);
         if (userFromDB.Password == userModel.Password)
         {
              FormsAuthentication.SetAuthCookie(userFromDB.Username, checkBoxRememberMe.Checked);
              //Use userFromDB as the username to authenticate because it will 
              //preserve capitalization of their username the way they entered it
              //into the database; that way, if they registered as "Bob" but they
              //type in "bob" in the login field, they will still be authenticated
              //as "Bob" so their comments on your blogs will show their name
              //the way they intended it to.

              return "Successfully logged in!";
         }
    }

    return "Invalid username or password.";

Сега, след като те са удостоверени, можете просто да използвате Page.User.Identity.IsAuthenticated в кода си, за да разберете дали са влезли. Подобно на това:

if (User.Identity.IsAuthenticated)
{
     DataLayer.PostBlogComment(User.Identity.Name, commentBody);
     //Then in your controller that renders blog comments you would obviously 
     //have some logic to get the user from storage by the username, then pull
     //their avatar and any other useful information to display along side the
     //blog comment. This is just an example.
}

Освен това можете да заключите цели методи за действие или дори цели контролери за потребители, които са удостоверени чрез доставчика на удостоверяване на формуляри. Всичко, което трябва да направите, е да добавите етикети като тези към вашите методи/контролери за действие:

[Authorize]
public ActionResult SomeActionMethod()
{
    return View();
}

Атрибутът [Authorize] ще попречи на потребителите, които не са влезли в системата, да получат достъп до този метод на действие и ще ги пренасочи към вашата страница за вход. Можете да използвате същия атрибут, за да филтрирате роли, ако използвате вградения доставчик на роли.

[Authorize(Roles="Admin, SalesReps")]
public ActionResult SomeActionMethod()
{
    return View();
}

Тези атрибути могат също да се добавят над класа на контролера, за да се приложи неговата логика към целия контролер.

РЕДАКТИРАНЕ: За да излезете от потребител, всичко, което трябва да направите, е да се обадите на FormsAuthentication.SignOut();

person Chev    schedule 05.11.2010

Хей @Bibo, добре, че не избираш доставчиците на членство. Мисля, че UserService или подобен, който предоставя методи за създаване, удостоверяване на потребители и още няколко метода, трябва да са достатъчни. Като предложение използвайте хеширане на парола и сол на парола за паролата на потребителя. Ето добра връзка за разглеждане. Също така погледнете този отговор аз даде преди време.

Късмет!

РЕДАКТИРАНЕ: Вместо това параметърът RememberMe трябва да се нарича keepMeSignedIn.

person uvita    schedule 15.09.2010
comment
Благодаря за отговора, но не мога да намеря нищо, което може да ми помогне. Можете ли да поставите връзка към статия за това? - person Libor Zapletal; 15.09.2010
comment
CodeCampServer codecampserver.codeplex.com е примерно приложение, което внедрява това, което търсите. - person uvita; 15.09.2010

Тази статия за удостоверяване на формуляри ви дава много информация за създаване на ваша собствена проста система за сигурност, особено частта за FormsAuthenticationTicket.

http://support.microsoft.com/kb/301240

person James McCormack    schedule 27.09.2010