2017-02-01 9 views
1

Скажем, у меня есть база данных SQL Server, содержащая имена пользователей/пароли. В моем «логином» представлении я хочу ввести данные в текстовые поля имени пользователя и пароля, а когда я нажму «login», я хочу использовать свой контроллер входа для сравнения этих значений со значениями в базе данных. Все это довольно прямолинейно: enter image description hereКак работает идентификация в Asp .Net MVC 5

Тем не менее, я хочу использовать атрибут [Authorize] на остальной части контроллеров моего сайта. После предоставления доступа к странице входа в систему я не могу найти примеров, объясняющих, как «авторизовать» пользователя, чтобы атрибуты ["Authorize"] распознавали этого пользователя и позволяли им получать доступ к другим контроллерам/действиям. Вот как я начал это задавать, но я не могу найти никакого направления, где взять это отсюда.

public class LoginController : Controller 
{ 
    // GET: /<controller>/ 
    //[Route("/Login")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public bool Login(Workflow.Models.WorkflowContext wfc, string username, string password) 
    { 
     var user = wfc.User.Where(u => u.Active && u.Username == username && u.Password == password).ToList(); 
     if (user.Count > 0) 
     {    
      //User may log in 
      return true; 
     } 
     else 
      //Access Denied 
      return false; 
    } 
} 

Например, без пользователя авторизовавшись, я не хочу, чтобы они были в состоянии достигнуть моего «Home Controller»:

[Authorize] 
public class HomeController : Controller 
{ 
    [Route("/Home")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult About() 
    { 
     ViewData["Message"] = "Your application description page."; 

     return View(); 
    } 

    public ActionResult Contact() 
    { 
     ViewData["Message"] = "Your contact page."; 

     return View(); 
    } 

    public ActionResult Error() 
    { 
     return View(); 
    } 
} 

Я слышал о классах «идентичности» и «SignInManager», и я немного перегружен тем, как использовать любой из этих параметров. Я все еще несколько новичок в ASP .Net MVC, поэтому я пытаюсь понять, как работает авторизация. Благодарю.

ответ

4

Аутентификация/авторизация много сложнее, чем просто проверка имени пользователя и пароля один раз. Идентификатор ASP.NET является одним из нескольких различных механизмов, доступных для приложений ASP.NET для обработки аутентификации/авторизации и является рекомендуемым подходом к индивидуальному пользовательскому авторизу. Он заменяет старше ASP.NET. SignInManager - это просто класс, который является частью идентификатора ASP.NET, который обрабатывает такие вещи, как подписание пользователя (очевидно). Это не какая-то отдельная вещь.

С учетом этого вам просто нужно будет впасть. Вы определенно не хотите пытаться создать свою собственную систему с нуля, и, продвигаясь вперед, Identity в значительной степени является основным методом аутентификации и авторизации в ASP.NET. Изучите его сейчас, и вы сможете работать с большинством сайтов ASP.NET там, и вы сможете применить свои знания к любому новому сайту ASP.NET, который вы создаете.

Начните свое путешествие с https://www.asp.net/identity. Существует ряд хороших руководств и руководств, перечисленных там и связанных с ними (не забудьте проверить дополнительные ресурсы). Кроме того, вы захотите создать новый проект MVC с выбранными индивидуальными учетными записями пользователей. Это даст вам проект с основами, в котором вы можете использовать базовый материал Identity. Вы также можете запустить целостный свиньи и создать пустой проект MVC, а затем установить пакет удостоверений Identity Samples Nuget. Это создаст проект в виде леса с почти каждой функцией в Identity (двухфакторный авторизатор, сторонние OAuth-логины и т. Д.). С этим вы можете получить представление о том, как все работает.

+0

Спасибо. Я решил, что это не так просто, как просто сравнение значений в таблице SQL. Лучшее решение - просто вскочить и попытаться понять все, я полагаю. Я уже заглянул в эту ссылку, и мне было любопытно, действительно ли это было сложно. Спасибо за Ваш ответ! – Rinktacular

+0

Ну, это не очень сложно, но я мог видеть «подавляющее». Конечно, есть много информации. Тем не менее, вы всегда можете просто начать с малого и развернуть позже. Сфокусируйтесь только на простом знаке, затем добавьте сброс пароля, управление учетными записями и т. Д. Затем вы можете начать искать сторонние логины и/или двухфакторные авторизации. –

+0

Подавляющее превосходство - отличный способ поставить хаха. Это был мой план, в основном, больше функциональности типа «управление учетными записями», после того как я понял, как обрабатываются фактические логины. Спасибо за помощь :) – Rinktacular