В данном случае напишем авторизацию. Прежде всего создадим базу MS SQL и единственную в ней табличку Users и в ней 3 поля – Id (автоинкрементное) ,Login,Password
Следующий шаг
В VisualStudio, MVC
-установим EntityFramework при помощи Nuget
в моделях добавим модели User и контекст для связи с базой данных
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace JSLearning.Models { public class User { public int Id { get; set; } public string Login{get;set;} public string Password { get; set; } } } |
Контекст
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Web; namespace JSLearning.Models { public class UserContext : DbContext { public UserContext() : base("DbConnection"){ } public DbSet<User> Users {get;set;} } } |
В WebConfig добавим строку подключения
1 2 3 4 |
<connectionStrings> <add name="DbConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Users;Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings> |
Создадим контроллер Users и представления для операций CRUD, запустим проект и добавим одного пользователя через метод Create
Теперь в этом контроллере добавим следующие методы для авторизации
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
[HttpGet] public ActionResult AuthorizationSuccess() { return View(); } [HttpGet] public ActionResult AuthorizationFail() { return View(); } [HttpGet] public ActionResult Login() { return View(); } [HttpPost] public ActionResult Login([Bind(Include = "Login,Password")] User userModel) { UserContext db = new UserContext(); /* User user = db.Users.Find(userModel.Login,userModel.Password); if (user == null) { return HttpNotFound(); } */ User user = db.Users.Where(u=>u.Login==userModel.Login).Where(u=>u.Password == userModel.Password).FirstOrDefault(); if (user == null) { //return HttpNotFound(); return RedirectToRoute(new { controller = "Users", action = "AuthorizationFail" }); } return RedirectToRoute(new { controller = "Users", action = "AuthorizationSuccess" }); } |
Здесь мы проверяем данные с формы, ищем такого пользователя в базе, проверяем, что логин и пароль совпадают с теми, что в базе.
Представления
Login.cshtml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@{ ViewBag.Title = "Login"; } <h2>Login</h2> <form class="myform" style="width: 500px; border: 1px red; margin: auto;" action="Login" method="POST"> <div style="padding: 10px;">Логин: <span style="float: right;"> <input name="Login" size="50" type="text" /></span> </div> <div style="padding: 10px;">Пароль:<span style="float: right;"> <input name="Password" size="50" type="text" /></span> </div> <center><div style="position: relative; left: 70px;"><input name="submit_form" type="submit" value="Отправить" /></div></center> </form> |
Эта форма будет выглядеть так
Представление в случае успешной авторизации
1 2 3 4 5 |
@{ ViewBag.Title = "AuthorizationSuccess"; } <h2>Вы успешно авторизовались!</h2> |
Представление в случае неудачной авторизации
1 2 3 4 5 |
@{ ViewBag.Title = "AuthorizationFail"; } <h2>AuthorizationFail</h2> |