2017-03-03 1 views
-1

MVC 5 C# 숨기기 url 매개 변수

$.ajax({ 
 
      type: "POST", 
 
      url: "@Url.Action("SignInUp")", 
 
      data: JSON.stringify({ email_add: email_add ,}), 
 
      contentType: "application/json; charset=utf-8", 
 
      success: function (response) { 
 
       
 
       if (response.result == 'SignUp') { 
 
        alert("Opp`s its look like you dont have an access for this website"); 
 
        window.location = response.Urls; 
 
       } 
 
       else 
 
       { 
 
        alert("Success fully login"); 
 
        window.location = response.Url; 
 
       } 
 

 
      } 
 
     });

인사들 mvc5의 C#에서 새로운 난`와 나는 카운터에서이 문제는 내가 내 URL 매개 변수를 숨기려고합니다. 어느 날 사전

주셔서 감사합니다 도움이 될 수 있습니다이 내 코드입니다 : 당신이 POST보다는 URL 매개 변수 문제가 발생할 수 있습니다에 가고 싶어하지 않는

public ActionResult SingInUp(string email_add) 
{ 
    bool obj = db.tblUsers.Any(x => x.email_add.Equals(email_add)); 
    if (obj) 
    { 
     tblUser user = db.tblUsers.Single(x => x.email_add == email_add); 
     Session["email_add"] = user.email_add; 
     Session["fname"] = user.fname; 
     Session["lname"] = user.lname; 
     return Json(new { result = "Redirect", Url = Url.Action("Check", "ProjectV3") }); 
    } 
    else 
    { 
     return Json(new { result = "SingUp", Urls = Url.Action("SignUp", "ProjectV3", new { email_add = email_add}) }); 
    } 
} 

This is i want to hide

+1

당신은 할 수 없습니다. URL에없는 경우 어떻게 값을 서버에 보냈을 것이라고 생각하십니까? –

+4

하지만 'JsonResult'를 반환하면 AJAX 호출이므로 POST로 만들고 본문으로 보내면 어떨까요? –

+0

당신이 당신의 요지를 이해할 수 있도록 예제를 제공해 줄 수 있습니까 – Newbie

답변

0

클라이언트 URL에서 무엇인가를 효과적으로 숨기려면이를 숨기거나 다음 요청시 캡처 할 수있는 서버 어딘가에 저장하는 방법을 찾아야합니다.

서버에이 데이터를 저장할 수있는 곳이 많지만 실제로는 분명합니다. 이 요청에 걸쳐 지속되고 액세스 할 때 TempData에서 삭제 될 때 TempData

Cookies

    1. 지금 TempData는 당연한 선택처럼 보일 수 있습니다. 또한 그 몰락입니다, SingUpIn 메서드에서 TempData을 설정 한 다음 JsonResul을 반환한다고 가정하면 리디렉션을 위해 JavaScript를 통해 사용됩니다. 그런 다음이 페이지로 리디렉션 한 다음 나중에 제거되는 사전의 값을 가져옵니다. 따라서 사람이 SingUp 페이지에서 끝나면 어떤 이유로 페이지를 새로 고치기로 결정하면 TempData의 값을 다시 찾을 수 없습니다.

      이제 각 읽기에서 TempData 속성을 재설정하여 처리 할 수 ​​있습니다. 그래서 기본적으로 TempData 항목을 읽은 다음 TempData 항목을 다시 할당합니다.

      [기본적으로] 작동하고 URL에 이메일을 표시하지 않는 몇 가지 기본적인 코드가 있습니다.

      public ActionResult SignUpIn(string email_acct) 
      { 
          //pretend i tested for a real user 
          TempData["email_acct"] = email_acct; 
          var r = new { result = "SingUp", Urls = Url.Action("SingUp") }; 
          return Json(r); 
      } 
      
      public ActionResult SingUp() 
      { 
          if (!TempData.ContainsKey("email_acct")) 
          { 
           //no temp data email.. maybe redirect.. who knows!! 
           return RedirectToAction("Index"); 
          } 
      
          //read the temp data entry.. 
          string emailAcct = TempData["email_acct"].ToString(); 
      
          //reset the temp data entry 
          TempData["email_acct"] = emailAcct; 
      
          return View(new SingUpModel { EmailAccount = emailAcct }); 
      } 
      
  • 0

    . 구현 세부 사항 중 일부를 숨기려면 매개 변수를 인코딩하여 해당 의미를 모호하게 만들 수 있습니다. http://localhost:1126/ProjectV3/SignUp?email_add=cGtleWJpcmQ5NUBnbWFpbC5jb20= :

    return Json(new { result = "SingUp", Urls = Url.Action("SignUp", "ProjectV3", new { email_add = Base64Encode(email_add)}) }) 
    

    ...

    public static string Base64Encode(string plainText) { 
         var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText); 
         return System.Convert.ToBase64String(plainTextBytes); 
        } 
    

    당신은 같은 URL로 끝날 것입니다. 매개 변수의 의도를 숨기기 위해 매개 변수의 이름을 분명히 변경할 수 있습니다.

    +1

    OP querystring을 숨기려고합니다 –

    +3

    예, 사람들은 할 수 없다고 말했듯이 나는 대안을 제안하고있다 – Daniel

    +0

    정보를 볼 수있는 양식을 만들고 싶기 때문에 viewbag 이메일을 해독하는 것이 좋습니다. 내 데이터 SQL에 저장할 수 있습니다. – Newbie