我使用asp.net mvc 5.我有两页。带有字段的第一页是输入新的PIN,第二页是重新输入新的PIN
我在第一页的提交表单中传递了cardID和新的PIN码,例如:
.../ChangePIN/ConfirmPIN?cardID=123456789&newPIN=123456
我要加密"cardID = 123456789"
和"newPIN = 123456"
,我该怎么办?
namespace ATM.Web.Controllers
{
public class ChangePINController : Controller
{
ATMDb ATMContext = new ATMDb();
string cardID = ATM.Core.Utilities.MyUtilities.getInstance().Card.CardId;
//
// GET: /Card/ChangePIN
public ActionResult ChangePIN(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var card = ATMContext.Card.Find(id);
if (card == null)
{
return HttpNotFound();
}
ViewBag.cardID = id;
return View();
}
[HttpGet]
public ActionResult ConfirmPIN(string cardID, string newPIN)
{
ViewBag.cardID = cardID;
ViewBag.newPIN = newPIN;
return View();
}
[HttpPost]
public ActionResult ConfirmPIN(string cardID, string newPIN, string newPINConfirm)
{
if (newPIN != newPINConfirm)
{
ViewBag.Message = "";
ViewBag.cardID = cardID;
ViewBag.newPIN = newPIN;
return View();
}
else
{
var card = ATMContext.Card.Find(cardID);
ATMContext.Entry(card).State = EntityState.Modified;
card.PIN = newPINConfirm;
ATMContext.SaveChanges();
return RedirectToAction("Success");
}
}
public ActionResult Success()
{
return View();
}
}
}
请帮帮我 谢谢大家。
答案 0 :(得分:2)
在加密网址中,如果请求者对所有获取请求都是开放的,则必须知道加密。 如果您在视图中使用内部链接,则可以为其创建静态类(实用程序)。前
public static Encryption{
public static string encrypt(string ToEncrypt)
{
return Convert.ToBase64String(Encoding.ASCII.GetBytes(ToEncrypt));
}
public static string decrypt(string cypherString)
{
return Encoding.ASCII.GetString(Convert.FromBase64String(cypherString));
}
}
在您的视图中使用:
@Html.ActionLink("link", "Action_name", "Controller_name", new { id=Encryption.encrypt(article.ArticleID) }, null)
在使用Id ex。
之前,您必须解密 public ActionResult ChangePIN(string id)
{
string _id=Encryption.decrypt(id);
...
}
希望它会有所帮助。