Asp.Net을 처음 사용합니다. 제가 원하는 것은. json 데이터를 반환하는 로그인 서비스 용 웹 API가 있습니다. 웹 APi의 샘플 URL
http://localhost:55500/api/Login/submit?username=abc&password=abc123
다음과 같은 json 데이터를 반환합니다.
[{"UserID":0,
"Status":"True",
"Name":"885032-59-6715",
"DepName":"Ajay"}
]
Asp.NET MVC에서 로그인 페이지를 어떻게 인증 할 수 있습니까? 로그인 성공 (상태 : 참). 대시 보드로 리디렉션하고보기 페이지에 json 데이터를 표시해야합니다. 로그인에 실패하면 오류 메시지가 표시됩니다.
내 ASP.NET MVC 모델 calss 파일 :
namespace LoginPracticeApplication.Models{
public class Login {
[Required(ErrorMessage = "Username is required")] // make the field required
[Display(Name = "username")] // Set the display name of the field
public string username { get; set; }
[Required(ErrorMessage = "Password is required")]
[Display(Name = "password")]
public string password { get; set; }
}}
내 ASP.NET MVC 컨트롤러 파일 :
public ActionResult Index(Login login)
{
if (ModelState.IsValid) // Check the model state for any validation errors
{
string uname = "";
uname = login.username;
string pword = "";
pword = login.password;
string url = "http://localhost:55506/api/Login/submit?username=" + uname + "&password=" + login.password + "";
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage responseMessage = client.GetAsync(url).Result;
var responseData = responseMessage.Content.ReadAsStringAsync().Result;
if (responseData=="true")
{
return View("Show", login); // Return the "Show.cshtml" view if user is valid
}
else
{
ViewBag.Message = "Invalid Username or Password";
return View(); //return the same view with message "Invalid Username or Password"
}
}
else
{
return View();
}
return View();
}
위의 코드로 로그인을 시도했을 때. 항상 "잘못된 사용자 이름 또는 암호"가 표시됩니다. 도움을 주셔서 미리 감사드립니다. 성공을 기대
나는 문제가 있다고 생각합니다.
var responseData = responseMessage.Content.ReadAsStringAsync().Result;
if (responseData=="true")
{
return View("Show", login); // Return the "Show.cshtml" view if user is valid
}
else
{
ViewBag.Message = "Invalid Username or Password";
return View(); //return the same view with message "Invalid Username or Password"
}
당신이로 ReadAsStringAsync()
응답, 아마 당신이 언급하는 JSON을 반환하는 [{"UserID":0,"Status":"True","Name":"885032-59-6715","DepName":"Ajay"}]
것을 의미 테스트를 responseData=="true"
일명. "[{"UserID":0,"Status":"True","Name":"885032-59-6715","DepName":"Ajay"}]" == "true"
거짓이 될 것입니다.
사용할 수는 responseData.Contains("true")
있지만 이것이 최선의 접근 방법이라고 생각하지 않습니다.
갈 방법 ReadAsStringAsync()
은 .NET을 통해 문자열 (json)을 객체로 deserialize해야한다는 것 JsonConvert.DeserializeObject<LoginResultModel>(responseData);
입니다. JsonConvert는 Nuget에서 얻을 수있는 Newtonsoft.Json에 있습니다. LoginResultModel에서 json을 고려하여 만들어야합니다. 나는 그것이 다음과 같을 것이라고 믿습니다.
public class LoginResultModel
{
public int UserID { get; set; }
public bool Status { get; set; }
public string Name { get; set; }
public string DepName { get; set; }
}
그리고 배열을 반환 할 때 LoginResultModel 목록으로 역 직렬화해야합니다. JsonConvert.DeserializeObject<List<LoginResultModel>>(responseData);
추신 : 응답 데이터가 가져 오는 데이터를보고 왜 거짓으로 평가되었는지 이해하기 위해 디버그 할 수 있습니다.
문안 인사
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다