Разрешенные изменения в БД через формы - PullRequest
0 голосов
/ 04 мая 2020

Как я могу предоставить доступ к изменениям в базе данных через формы в ASP. NET приложении MVC5, создавая определенных c пользователей и пароли, чтобы они могли вносить изменения? Мой клиент не хочет строить решение на основе логинов. Полный контент может быть виден любому (без входа в систему), но изменения в базе данных могут быть сделаны только тогда, когда указанный c пользователь вводит свои учетные данные (имя пользователя, пароль) и нажимает кнопку «Установить», см. Pi c. Я пробовал некоторые вещи, такие как установка условия basi c «if else», когда имя пользователя и пароли те же, что и в таблице SQL, но изменения могут быть сделаны даже без ввода учетных данных в поля. ссылка на пи c:

enter image description here

Моя правка просмотра:

@model Company.Models.SovaGenNastaveni
@{
    ViewBag.Title = "Edit";
    Layout = "~/Views/Shared/_LayoutPage1.cshtml";
}
<link href="~/Content/styles/EditForms.css" rel="stylesheet" />
<div id="states" class="container-fluid">
    <div class="row">
        <h4>Current Values</h4>
    </div>

    <table id="FormEdit" class="table table-bordered">

        <tr>
            <th>Item name</th>
            <td>@Model.settingsName</td>
        </tr>
        <tr>
            <th class="alert alert-primary">State</th>
            @if
                (Model.State == 101)
            {
                <td class="alert alert-success"><strong>Active</strong></td>
            }
            else
            {
                <td class="alert alert-danger"><strong>InActive</strong></td>
            }
        </tr>
        <tr>
            <th>Description of settings</th>
            <td>@Model.settingsDesc</td>
        </tr>
    </table>



    <form id="formEdit" action="/SimulationSettings/edit/@Model.ID" method="post">
        <div class="row">
            <h4>Change state</h4>
        </div>
        <div class="form-row">
            <div class="form-group col-md-5">
                <label for="Hodnota">Choose a new <strong>Hodnota</strong></label>

                <select class="form-control" id="ChooseState" name="State">
                    <option value="@Model.State">---Choose---</option>
                    <option value="101">Active</option>
                    <option value="102">InActive</option>
                </select>
            </div>
        </div>

        <div class="form-row">
            <div class="form-group col-md-5">
                <label for="Hodnota">Confirm your rights</label>
                <input type="text" class="form-control" id="Name" name="Name" placeholder="username" value="" />
                <input type="password" class="form-control" id="Password" name="Password" placeholder="password" />
            </div>
        </div>


        <button type="submit" class="btn btn-success">Set</button>
        <a class="btn btn-danger" href="/SimulationSettings/Settings">Cancel</a>
    </form>
</div>

Контроллер:

public ActionResult Edit(long id)
        {
            SiempelLinkedServerEntities db = new SiempelLinkedServerEntities();
            SovaGenNastaveni existingSetting = db.SovaGenNastavenis.Where(x => x.ID == id).FirstOrDefault();

            return View(existingSetting);
        }

        [HttpPost]
        //[Authorize]???
        public ActionResult Edit(SovaGenNastaveni genNastaveni)
        {
            SiempelLinkedServerEntities db = new SiempelLinkedServerEntities();
            SovaGenNastaveni existingSetting = db.SovaGenNastavenis.Where(x => x.ID == genNastaveni.ID).FirstOrDefault();
            existingSetting.State = genNastaveni.State;


            db.SaveChanges();

            return RedirectToAction("Settings", "SimulationSettings");
        }

Модель спроектирована и сгенерирована с сервера SQL (EF Designer, DB-First Approach)

На SQL Сервер У меня есть таблица с 3 столбцами = ID, имя пользователя, пароль (это может быть быть зашифрован с ха sh). Решение должно быть развернуто только в Intr anet компании. Никакой необходимой безопасности или безопасности не требуется.

Короче говоря, страница редактирования должна быть авторизована, когда предоставленный пользователь вводит свои учетные данные, изменения будут внесены в БД, если учетные данные не заполнены, если ничего не произойдет.

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

1 Ответ

0 голосов
/ 04 мая 2020

Это пример того, что я использовал

Получить запрос

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class ClientToDB : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(SendForValues());
    }

    IEnumerator SendForValues()
    {
        using (UnityWebRequest www = UnityWebRequest.Get("http://" + StaticValues.ip + "/empires/ClientToDB.php"))
        {
            yield return www.SendWebRequest();

            if (www.downloadHandler.text != "0")
            {
                Debug.Log(www.downloadHandler.text);
            }
            else
            {
                Debug.Log("Sucessfully Sent");

            }

        }

    }
}

Сообщение

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class RegisterUser : MonoBehaviour
{
    public InputField Field;

    public void CreateUser()
    {
        PlayerPrefs.SetString("EmpireName", Field.text);

        StartCoroutine(StartRegisterUser());


    }

    IEnumerator StartRegisterUser()
    {
        WWWForm form = new WWWForm();

        form.AddField("name", PlayerPrefs.GetString("EmpireName", ""));
        using (UnityWebRequest www = UnityWebRequest.Post("http://" + StaticValues.ip + "/empires/UserCreateAccount.php", form))
        {
            yield return www.SendWebRequest();
            Debug.Log(www.downloadHandler.text);

            if (www.downloadHandler.text[0] != '0')
            {
                Debug.Log(www.downloadHandler.text);
            }
            else
            {
                Debug.Log(www.downloadHandler.text);
                Debug.Log("Sucessfully Sent");
                PlayerPrefs.SetInt("EmpireCreated", 1);
                SceneManager.LoadScene(2);

                int id = int.Parse(www.downloadHandler.text.Split('\t')[1]);
                PlayerPrefs.SetInt("id", id);

            }

        }

    }
}

Я использовал php, чтобы получить запрос так чтобы получить информацию с помощью php, вы используете $ _POST ["KEY"], а для отправки - с помощью form.AddField ("KEY", PlayerPrefs.GetString ("EmpireName", ""));

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