Как сохранить сеанс входа в систему в ASP. NET MVC - PullRequest
0 голосов
/ 07 августа 2020

Привет, это мой контроллер входа в систему для страницы входа, и я сделал все, чтобы проверить и войти в систему, однако я не сделал сеанс входа в систему, поэтому мой веб-сайт не знает, кто входит в систему, используя идентификаторы и пароль из базы данных. Таким образом, веб-сайт распознает только одного пользователя даже после входа в систему.

Мне также нужно знать, как получить сеанс входа в систему, если я хочу сделать выбор с помощью кнопки. Например; «Пользователь Z выбран WorkSchedule A * после входа в систему с именем пользователя и паролем пользователя Z»

Вход не будет завершен, если для веб-сайта нет сохраненного сеанса, у меня проблемы с сохранением сеанса и был бы признателен, если бы кто-нибудь мог помочь мне сделать это.

Код контроллера:

 [HttpGet]
    public ActionResult Login()
    {
        return View();
    }
    void connectionString()
    {
        con.ConnectionString = " ";

    }
    [HttpPost]
    public ActionResult SaveData(Account acc)
    {
        connectionString();
        con.Open();
        com.Connection = con;
        com.CommandText = "insert into Staff (StaffNRIC,StaffEmail,StaffContact,StaffName,StaffAddress,BranchID,StaffRole,StaffPositionID,StaffAccountStatus)" +
            "values ('" + acc.StaffNRIC + "','" + acc.StaffEmail + "','" + acc.StaffContact + "','" + acc.StaffName + "','" + acc.StaffAddress + "','" + acc.BranchID + "',' NULL ','" + acc.StaffPositionID + "', 'Pending' )";
        dr = com.ExecuteReader();
        if (dr.Read())
        {
            con.Close();
            return View("Register");
        }
        else
        {
            con.Close();
            return View("Login");
        }


    }
    [HttpPost]
    public ActionResult Verify(Account acc)
    {
        connectionString();
        con.Open();
        com.Connection = con;
        com.CommandText = "select * from Staff where StaffNRIC='" + acc.StaffNRIC + "' and StaffContact='" + acc.StaffContact + "' and StaffAccountStatus = 'Approved'";
        dr = com.ExecuteReader();
        if (dr.Read())
        {
            con.Close();

            return View("Home");
        }
        else
        {
            con.Close();
            return View("Login");
        }


    }

Страница просмотра:

    <form action="Verify" method="post">
        <div class=" w3l-form-group">
            <label>NRIC:</label>
            <div class="group">
                <i class="fas fa-user"></i>
                <input type="text" name="StaffNRIC" class="form-control" placeholder="StaffNRIC" required="required">
            </div>
        </div>
        <div class=" w3l-form-group">
            <label>Password:</label>
            <div class="group">
                <i class="fas fa-unlock"></i>
                <input type="password" name="StaffContact" class="form-control" placeholder="StaffContact" required="required">
            </div>
        </div>

        <button type="submit">Login</button>
    </form>
</div>

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Во-первых, из вашего описания кажется, что ваше приложение является приложением Asp. net MVC, а не Asp. net Core MVC. Таким образом, вы можете напрямую использовать сеанс для хранения информации о пользователе в сеансе:

Код, как показано ниже, сохранить значение в сеансе:

Session("UserName") = UserName;

Затем, когда вы читаете данные из сеанса , вы можете использовать следующий код:

        if (Session["UserName"] != null)  
        {  
            return View();  
        } else  
        {  
            return RedirectToAction("Login");  
        } 

Более подробная информация об управлении состоянием сеанса в asp. net, пожалуйста, проверьте следующие статьи:

ASP. NET Обзор состояния сеанса

Приложение простого входа с использованием сеансов в ASP. NET MVC

Второе, Asp . net предоставляет систему идентификации, мы могли бы использовать ее встроенный метод для достижения функции входа в систему, управления пользователями, ролями и т. Д., А также хранить информацию о пользователях для входа с помощью cook ie. Вы можете попробовать использовать его с вашим приложением MVC. Пожалуйста, проверьте следующие статьи:

Введение в ASP. NET Идентификатор

Добавление ASP. NET Идентификатор в пустой или Существующий проект веб-форм

Добавление ASP. NET Проверка подлинности MVC5 в существующий проект

Кроме того, если ваше приложение Asp. Приложение net Core MVC, вам необходимо включить промежуточное ПО сеанса в Startup.cs. Более подробную информацию об использовании сеанса и удостоверения в ядре asp. net вы можете найти в следующих статьях:

Управление сеансом и состоянием в ASP. NET Core

Введение в Identity на ASP. NET Core

Как добавить ASP. NET Core identity к существующему Core mvc проект?

0 голосов
/ 07 августа 2020
  1. Прежде всего ваш код уязвим для sql инъекций.
  2. MVC проект имеет встроенную систему аутентификации пользователей, почему бы не использовать ее?
  3. Если вы не хотите использовать встроенную аутентификацию пользователя, вы можете реализовать cook ie, которая будет хранить текущий сеанс пользователя.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...