Отобразить неверные данные входа в систему, используя код MVC - PullRequest
0 голосов
/ 28 марта 2019

Я хочу написать функцию проверки учетных данных пользователя на стороне сервера.Так что я не получаю, я хочу получить сообщение, если пользователь ввел неверные учетные данные.

Ниже приведен код для проверки.

public ActionResult ValidateUser()
    {
        string strUsername = Convert.ToString(Request.Form["txtUsername"]);
        string strPassword = Convert.ToString(Request.Form["txtPassword"]);
        //  return   RedirectToAction("Assign","App");
        string strReturn = "";
        string strDbError = string.Empty;
        strUsername = strUsername.Trim();
        strPassword = strPassword.Trim();
        string strUserName = "";
        string strCurrentGroupName = "";
        int intCurrentGroupID = 0;
        string controller = "";
        string action = "";

        UserProviderClient ObjUMS = new UserProviderClient();
        bool result = ObjUMS.AuthenticateUser(strUsername, strPassword, out strDbError);

        Session["isUserAuthenticated"] = result;

        try
        {
            if (result == true)
            {
                Session["isUserOutsideINDomain"] = true;
                Session["OutsideINDomainUsername"] = strUsername;
                //redirect to respective controller

                UMS ObjUMSDATA = new UMS();
                //strUserName = System.Web.HttpContext.Current.User.Identity.Name.Split('\\')[1];
                strUserName = strUsername;
                _UMSUserName = strUserName;

                if (!string.IsNullOrEmpty(strUserName))
                {
                    List<UMSGroupDetails> lstUMSGroupDetails = null;
                    List<UMSLocationDetails> lstUMSLocationDetails = null;

                    ObjUMSDATA.GetUMSGroups(strUserName, out strCurrentGroupName, out intCurrentGroupID, out lstUMSLocationDetails, out lstUMSGroupDetails);
                    if (strCurrentGroupName != "" && intCurrentGroupID != 0)
                    {
                        ViewBag.LoginUserName = strUserName.ToUpper();
                        ViewBag.CurrentGroupName = strCurrentGroupName;
                        ViewBag.CurrentGroupID = intCurrentGroupID;
                        ViewBag.GroupDetails = lstUMSGroupDetails;
                        ViewBag.LocationDetails = lstUMSLocationDetails;
                        TempData["LoginUserName"] = strUserName.ToUpper();
                        Session["LoginUserName"] = strUsername.ToUpper();
                        TempData["Location"] = lstUMSLocationDetails;
                        Session["strCurrentGroupName"] = strCurrentGroupName;
                        TempData["strCurrentGroupName"] = strCurrentGroupName;
                        TempData.Keep();
                    }
                    else
                    {
                        return RedirectToAction("Error", "Shared");
                        //action = "ErrorPage"; controller = "UnAutherized";      
                        TempData["strLoginErrorInfo"] = "Invalid Username or Password";
                        TempData.Keep();
                    }
                }
            }

            if (strCurrentGroupName == "SAP Executive")
            {
                action = "Assign"; controller = "App";
            }
            else if (strCurrentGroupName == "Maintenance Lead")
            {
                //return RedirectToAction("App", "Certify");
                action = "Certify"; controller = "App";
            }
            else if (strCurrentGroupName == "NEIQC CMM")
            {
                //return RedirectToAction("App", "Approver");
                action = "Approver"; controller = "App";
            }

        }
        catch (Exception ex)
        {
            ApplicationLog.Error("Error", "ValidateUser", ex.Message);
        }
        return RedirectToActionPermanent(action, controller);
    }

Пожалуйста, предложите, где я могу подсказатьв моем коде выше.

1 Ответ

3 голосов
/ 28 марта 2019

Существуют различные способы, которыми вы можете отправлять свои сообщения обратно в представление с вашего контроллера:

Если вы используете AJAX для POST на вашем контроллере, вы можете использовать JSON-ответ. Примером этого может быть:

$.ajax({
 //You AJAX code....
 //On success
 success: function (data){
   if (data == "Invalid") {
     alert("Invalid Credentials Supplied");
  }
 },
 //If there is any error
 error: function (data) {
 alert("Could not process your request.");
 },
});

А в вашем контроллере:

public ActionResult ValidateUser()
{
//Your logic
return Json("Invalid", JsonRequestBehavior.AllowGet);
}

OR

Вы также можете использовать ViewData или ViewBag для установки ваших сообщений с подсказками. Примером может быть:

По вашему мнению:

<script type="text/javascript">
    $(document).ready(function () {
        var yourPrompt= '@ViewBag.PromptMessage';
        alert(yourPrompt);
    });
</script>

В вашем контроллере вы можете настроить приглашение:

ViewBag.PromptMessage= "Invalid Credentials Supplied";

В качестве альтернативы можно использовать ViewData с условным оператором:

<script type="text/javascript">
    $(document).ready(function () {

        var yourPrompt= '@ViewData["PromptMessage"]';
        if(yourPrompt=="Invalid"){
        alert("Invalid Credentials supplied");
       }        
    });
</script>

В вашем контроллере вы можете настроить приглашение:

ViewData["PromptMessage"] = "Invalid";

ИЛИ

Вы можете использовать ModelState для отображения ваших запросов или ошибок в вашем представлении. Это используется, когда вы используете строго типизированную привязку Model-View в вашем контроллере. Пример:

В вашем представлении настройте ValidationSummary:

@Html.ValidationSummary(false, "", new { @class = "text-danger" })

По умолчанию ValidationSummary отфильтровывает сообщения об ошибках на уровне поля. Ниже будут отображаться сообщения об ошибках в виде сводки вверху. Убедитесь, что у вас нет метода ValidationMessageFor для каждого из полей в вашей модели. Это только для определенных полей.

Вы также можете отобразить пользовательское сообщение об ошибке, используя ValidationSummary. Для отображения настраиваемого сообщения об ошибке, прежде всего, необходимо добавить настраиваемые ошибки в ModelState соответствующим методом действия.

В вашем контроллере:

public ActionResult DoSomething()
{
  //Your condition where you want to show your message
  //Add to the model state, your custom error 
  ModelState.AddModelError(string.Empty, "Invalid Credentials Supplied")
  return View("Your View Name");
}

Дополнение:

Если вы хотите настроить стиль вашего сообщения об ошибке в вашем View, добавьте класс в ValidationSummary, как это @Html.ValidationSummary(false, "", new { @class = "text-danger" }). Затем вы можете использовать этот класс в своем CSS следующим образом:

.text-danger
{ 
/*Your style*/
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...