1
votes

La demande de publication http angulaire 4 affiche des données dans l'URL

J'essaye de créer un contrôle de connexion en tapuscrit. Lorsque j'essaie d'envoyer des données, elles sont affichées dans une URL comme la méthode get.

Voici le code dactylographié;

[HttpGet]
public JsonResult Login(string login)
{
    UserJson user = JsonConvert.DeserializeObject<UserJson>(login);

    string pass = user.Password.ToMD5();

    var rb = entity.Users.Where(a => a.Active == true && a.Username == user.Username && a.Password == pass).FirstOrDefault();

    if (rb != null)
    {
        Session["CurrentUser"] = rb;

        return Json(true, JsonRequestBehavior.AllowGet);
    }
    else
    {
        return Json(false, JsonRequestBehavior.AllowGet);
    }
}

Et voici la méthode c #

AdminLogin(login: any) {
    let loginJson = JSON.stringify({ login });
    let headers = new Headers({ "Content-Type": "application/json" });
    let options = new RequestOptions({ headers: headers });

    return this.http.post(this.linkAdminLogin, loginJson, options)
        .map((response: Response) => response.json())
        .catch(this._errorHandler);
}


9 commentaires

Avez-vous ajouté un routage côté c # ou une route attributaire?


J'ai 2 itinéraires différents. L'un d'eux dans RouteConfig.cs et c'est comme routes.MapRoute (nom: "Ajax", url: "Ajax / {controller} / {action} / {login}", par défaut: new {controller = "Ajax", action = "Login", login = UrlParameter.Optional}); Et l'autre se trouve dans la configuration de arearegistration.cs et c'est comme context.MapRoute ("Ajax_default", "Ajax / {controller} / {action} / {login}", new {action = "Index", login = UrlParameter. Optionnel } );


Pouvez-vous essayer d'ajouter une classe avec deux propriétés avec le même nom que vous avez passé dans l'url de la demande comme userName et mot de passe et ajouter au paramètre de la méthode d'action comme Login (LoginClass login)


il donne une exception nulle pour l'objet de connexion


vous devez donner deux paramètres dans cette méthode Login (string username, string password)


qu'en est-il du côté ts?


essayez également avec post et changez-le en HttpPost


continuons cette discussion dans le chat .


il envoie toujours des paramètres avec le nom de connexion. dois-je changer quoi que ce soit du côté ts?


3 Réponses :


0
votes

Essayez de supprimer cette ligne

   let loginJson = JSON.stringify({ login });


1 commentaires

J'envoie l'objet de connexion directement et il affiche toujours les paramètres dans l'url avec l'attribut HttpGet. Si je le fais avec l'attribut HttpPost, cela donne une erreur 404. Rien n'a changé, je veux dire.



1
votes

Pouvez-vous essayer quelque chose comme ça? Exemple angulaire:

[HttpPost]
public IActionResult Login([FromBody] RequestModel request)
{
  // your code
  return Ok();
}

}

Exemple C #:

AdminLogin$(request: RequestModel): Observable<responseModel | type> {
  const url = '<url to api>';

  return this.http.post<responseModel | type>(url, {request})
    .pipe(catchError(this.errorHandler));


1 commentaires

Vous êtes les bienvenus, le combo angulaire 2+ et c # n'est pas facile au début.



0
votes

Configurez la configuration du proxy comme ici .


1 commentaires

je ne pouvais pas le faire. Je n'ai pas compris d'où le changer.