积极答复者
怎样用Ajax和FormsAuthentication类实现用户登录功能?

问题
-
怎样用Ajax和FormsAuthentication类实现用户登录功能?
页面上采用HTML控件<input type="button" id="btnLogin"/>
$("#btnLogin").click(function(){
//$.ajax......
});
请求ASHX文件,我是这样做的:
当传过来的用户名和密码在数据库中存在时,便使用FormsAuthentication.RedirectFromLoginPage(name, false);方法。
可是一运行到这个方法就会报错。
我以为是ASHX的问题,就换成了ASPX文件,还是不可以。
请问,如果我坚持使用FormsAuthentication这个类来实现登录,代码该怎么实现?
Do My Best
答案
-
-
哦。对,是别地方有错误。不过FormsAuthentication.SetAuthCookie(name, true);这个方法好像没有起作用。因为我在另一个页面使用User.Identity.Name不能得到用户名。
Do My Best
你先试试普通方式 能否登陆- 已标记为答案 NineTyNine_LiPei 2009年12月21日 12:06
-
你好,
用Ajax登录取决于你的需要。如果你登录后马上就转到其它页面,那就没必要了。
关于Ajax登录微软有比较详细的例子。
http://www.asp.net/AJAX/Documentation/Live/Tutorials/UsingFormsAuthenticationTutorial.aspx
Microsoft Online Community Support- 已标记为答案 NineTyNine_LiPei 2009年12月21日 12:06
-
- 已标记为答案 NineTyNine_LiPei 2009年12月21日 12:06
全部回复
-
我的ASHX中的代码是这样的:
using System.Web; using System.Web.Security; namespace Web.Handlers { /// <summary> /// $codebehindclassname$ 的摘要说明 /// </summary> public class UserHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { string action = context.Request.Params["Action"]; switch (action) { case "Login": string userName = context.Request.Params["UserName"]; string userPwd = context.Request.Params["UserPwd"]; //this.Login(userName, userPwd); break; default: break; } context.Response.ContentType = "text/plain"; context.Response.Charset = "UTF-8"; context.Response.Write("ok"); } public bool IsReusable { get { return false; } } private void Login(string name, string pwd) { if (true)//true : 测试用 { FormsAuthentication.SetAuthCookie(name, true); } } } }
$(document.body).ready(function() { $("#btnLogin").click(function() { var userName = $("#txtUserName").val(); var userPwd = $("#txtUserPwd").val(); var codeInputed = $("#txtCode").val(); var codeInCookie = ReadCookie("CheckCode"); if (codeInCookie.toUpperCase() == codeInputed.toUpperCase()) { $.ajax({ type: "get", url: "Handlers/UserHandler.ashx?Action=Login&UserName=" + userName + "&UserPwd=" + userPwd, dataType: "text", success: function(data, textStatus) { if (textStatus == "success") { document.URL = "Users/UserDetail.html"; } }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("error:" + textStatus); } }); } else { alert("验证码输入错误!"); } }); });
Do My Best -
-
哦。对,是别地方有错误。不过FormsAuthentication.SetAuthCookie(name, true);这个方法好像没有起作用。因为我在另一个页面使用User.Identity.Name不能得到用户名。
Do My Best
你先试试普通方式 能否登陆- 已标记为答案 NineTyNine_LiPei 2009年12月21日 12:06
-
你好,
用Ajax登录取决于你的需要。如果你登录后马上就转到其它页面,那就没必要了。
关于Ajax登录微软有比较详细的例子。
http://www.asp.net/AJAX/Documentation/Live/Tutorials/UsingFormsAuthenticationTutorial.aspx
Microsoft Online Community Support- 已标记为答案 NineTyNine_LiPei 2009年12月21日 12:06
-
- 已标记为答案 NineTyNine_LiPei 2009年12月21日 12:06