我用cookie尝试着做 但是在后台获取到用户名cookie的值总是null 但是密码的cookie的值又能获取到。代码如下:
这是controller 保存cookie的代码
public JsonResult LogOn(string sname, string spwd, string autologin) { userItem u = userTable.getOneByName(sname,spwd); if (u != null) { if (autologin == "1") { Response.Cookies["name"].Value = u.name; Response.Cookies["pwd"].Value = u.password; Response.Cookies["id"].Value = true.ToString(); } } return Json(u, JsonRequestBehavior.AllowGet); }
$(document).ready(function () { $("#btnlogin").live("click", chkUser); }); document.onkeydown = function (e) { var _lPwd = $.trim($("#txtpwd").val()); var theEvent = window.event || e; var code = theEvent.keyCode || theEvent.which; if (code == 13 && _lPwd.length > 3) { $("#btnlogin").click(); } } //var cookie = document.cookie["name"]; chkUser = function () { var cookieId = getCookie("id"); if (cookieId == "1") { var _uerName = getCookie("name"); var _userPwd = getCookie("pwd"); } else { var _userName = $("#userName").val(); var _userPwd = $("#txtpwd").val(); } var _gourl = $("#loginurl").val(); var _isautologin = "0"; if ($("#Checkbox1").attr("checked") == true) { _isautologin = "1"; } if (_userName == "" || _userPwd == "") { alert("用户名、密码不能为空"); return; } $.get("/OneGarIndex/LogOn" , { sname: _userName, spwd: _userPwd, autologin: _isautologin } , function (data) { if (data != "") { alert("登陆成功"); alert(_uerName + " b"); alert(_userPwd + " c"); alert(cookieId + " a"); location.href = "/OneGarIndex/Index"; //_gourl; //return; } else { alert("用户名或密码错误"); return; } } ); } //获取cookie的方法 function getCookie(cookie_name) { var allcookies = document.cookie; var cookie_pos = allcookies.indexOf(cookie_name); if (cookie_pos != -1) { // 把cookie_pos放在值的开始,只要给值加1即可。 cookie_pos += cookie_name.length + 1; var cookie_end = allcookies.indexOf(";", cookie_pos); if (cookie_end == -1) { cookie_end = allcookies.length; } var value = unescape(allcookies.substring(cookie_pos, cookie_end)); } return value; }
上面是JS代码 求大家指导
怎么才能是他自动登录 然后 他自动登录之后我清楚cookie 就好了吗?
两次声明的对象不一样,你存值的时候用的是 _uerName ,但是你传递到后台的却是 _userName ,赋值的时候写错变量名了,你检查看看。
chkUser = function () {
var cookieId = getCookie("id");
if (cookieId == "1") {
var _uerName = getCookie("name");
var _userPwd = getCookie("pwd");
}
else {
var _userName = $("#userName").val();
var _userPwd = $("#txtpwd").val();
}
var _gourl = $("#loginurl").val();
var _isautologin = "0";
if ($("#Checkbox1").attr("checked") == true)
{ _isautologin = "1"; }
$.get("/OneGarIndex/LogOn" , { sname: _userName, spwd: _userPwd, autologin: _isautologin }
抓个包,看看请求的 Headers。
你到后台断点看下,你的用户名和密码是否传递成功了。
然后登录用get,密码存客户端,这两种方式不太好!