.net中怎样 判断用户是不是登陆
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net中怎样 判断用户是不是登陆相关的知识,希望对你有一定的参考价值。
.net中怎样判断用户是否登陆.
我做了几个页面,想通过判断用户是否登陆来控制使用者权限,但不知道怎么做.请举个例子请明.谢谢.
我做的是一般的网站的会员登陆.就是想区别会员和一般游客的权限功能.并且,如果会员登陆了,在每个页面都会显示会员的相关信息.
如果用session的话常常会在登陆之后不久出现session信息丢失.这又怎么解决呢?
登陆的代码我会,我是想判断用户是否登陆来控制权限.
form验证怎么用?我没用过,可不可以给点例子.
首先
在你的web.config配置,验证类型及信息,如:
<authentication mode="Forms">
<forms name="landrise_aspnet" path="/" loginUrl="~/Login.aspx" timeout="20" defaultUrl="~/Default.aspx"/>
</authentication>
可用
Request.IsAuthenticated 判断是事登录
如
if (!Request.IsAuthenticated)
//未登录转到登录页面
FormsAuthentication.RedirectToLoginPage();
登录页面上,如果
if(通过帐号密码验证)
//username用户识标
//createPersistentCookie是否记住我,如果这个会true,将不会session过时,但下次也不必登录直接进入系统,可以用FormsAuthentication.SignOut();退出登录
FormsAuthentication.SetAuthCookie(username, createPersistentCookie);
//转到returnurl或配置的默认页
FormsAuthentication.RedirectFromLoginPage(username, createPersistentCookie);
可以通过HttpContext.Current.User.Identity.Name
或page类下
Context.User.Identity.Name
来取当前用户名
参考资料:http://hly8.com
参考技术A 在登录时,进行用户验证,即从数据库中读出是否存在该用户。示例:Select*
from
User
where
userid
=
@userid
and
userpassword
=
@userpassword;
如果存在,将该用户放入Session中。Session["userid"]
=
用户名如果不存在,也可以跳转到2,3,但Session["userid"]
=
null;进行2,3页面后,在Page_Load函数中对Session进行一下检查if(Session["userid"]
==
null)
button1.Enable
=
false;//不可用或者是button1.Visible
=
false;//不可见 参考技术B 如果怕session丢失,可以用COOKIE,先判断COOKIE是否为空,再把COOKIE的值赋给session
读COOKIE:
if (System.Web.HttpContext.Current.Request.Cookies["admin"] != null)
System.Web.HttpContext.Current.Session["admin_id"] = System.Web.HttpContext.Current.Request.Cookies["admin"].Values["admin_id"];
System.Web.HttpContext.Current.Session["admin_username"] = System.Web.HttpContext.Current.Request.Cookies["admin"].Values["admin_username"];
else
System.Web.HttpContext.Current.Response.Redirect(login.aspx);
写COOKIE:
public void WriteAdminCookie(string userid,string username)
HttpCookie objCookie;
objCookie = new HttpCookie("admin");
System.Web.HttpContext.Current.Session["admin_id"] = userid;
System.Web.HttpContext.Current.Session["admin_username"] = username;
objCookie.Values["admin_id"] = userid;
objCookie.Values["admin_username"] = username;
System.Web.HttpContext.Current.Response.Cookies.Add(objCookie);
代码都给了,分都给俺吧!! 参考技术C // 作为唯一标识的Key,应该是唯一的,这可根据需要自己设定规则。
// 做为测试,这里用用户名和密码的组合来做标识;也不进行其它的错误检查。
// 生成Key
string sKey = UserName.Text + "_" + PassWord.Text;
// 得到Cache中的给定Key的值
string sUser = Convert.ToString(Cache[sKey]);
// 检查是否存在
if (sUser == null || sUser == String.Empty)
// Cache中没有该Key的项目,表名用户没有登录,或者已经登录超时
// 注意下面使用的TimeSpan构造函数重载版本的方法,是进行是否登录判断的关键。
TimeSpan SessTimeOut = new TimeSpan(0,0,System.Web.HttpContext.Current.Session.Timeout,0,0);
HttpContext.Current.Cache.Insert(sKey,sKey,null,DateTime.MaxValue,SessTimeOut,
System.Web.Caching.CacheItemPriority.NotRemovable,null);
Session["User"] = sKey;
// 首次登录,您可以做您想做的工作了。
Msg.Text="<h4 style='color:red'>嗨!欢迎您访问xxx祝您浏览愉快!</h4>";
else
// 在 Cache 中发现该用户的记录,表名已经登录过,禁止再次登录
Msg.Text="<h4 style='color:red'>抱歉,您好像已经登录了呀</h4>";
return;
参考技术D 登陆后用个Session保存用户信息,在其它页面检查这个Session
登陆页面:
'登陆验证代码
session("username")=username '如果没有登陆就不执行这句话.
其它页面:
if session("username")="" then
response.write "你没有登陆"
response.end
end if
在ASP.NET中该如何用COOKIE判断用户是否登陆?我做用户登陆的系统,在登陆文件中为每个用户写入了一个Cookies,可为什么我在其它页面判断Cookies是否存在时系统会报错呢?
错误如下:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 61: //Response.Cookies["HJL"]["name"] = "hjl123";
行 62:
行 63: if(Request.Cookies["HJL"]["name"]==null ¦ ¦ Request.Cookies["HJL"]["name"]=="")
行 64:
行 65: Response.Write ("您还未登陆");
我知道是因为Cookies不存在才会出现这种错误,如果COOKIES存在则很正常,但我该怎么在页面的顶端判断COOKIES是否存在呢?以此来验证用户是否登陆?
另外还有一个问题,ASP.NET我是初学,像上面提到这种验证用户是否登陆的代码在每一个页面都要有,曾经在ASP中用一个包含文件包含进来就可以,不用每个页面都写,在ASP.NET(C#)中该怎么完成这种功能呢?我是ASP.NET1.1版的!
Asp.Net中Ajax实现登陆判断
Default.aspx: <head runat="server"> <title>无标题页</title> <script type="text/javascript"> var xmlhttp; function Login() { var userName=document.getElementById("TextBox1").value; var userPwd=document.getElementById("TextBox2").value; xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("GET","Login.aspx?UserName="+userName+"&UserPwd="+userPwd,true); xmlhttp.onreadystatechange=stateChange; xmlhttp.send(null); return false; } function stateChange() { if(xmlhttp.readystate==4&&xmlhttp.status==200) { document.getElementById("Label1").innerHTML=xmlhttp.responseText; } } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server" Width="100px"></asp:TextBox><br /> <asp:TextBox ID="TextBox2" runat="server" Width="100px"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" Text="登陆" /> <asp:Label ID="Label1" runat="server"></asp:Label></div> </form> </body>
protected void Page_Load(object sender, EventArgs e) { this.Button1.Attributes.Add("OnClick","return Login()"); }
Login.aspx: protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["UserName"] != null && Request.QueryString["UserName"].Length != 0 && Request.QueryString["UserPwd"] != null && Request.QueryString["UserPwd"].Length != 0) { if (Request.QueryString["UserName"] == "wu1987116" && Request.QueryString["UserPwd"] == "wu1987116") { Response.Write("登陆成功!"); } else { Response.Write("用户名或密码错误!"); } } }
以上是关于.net中怎样 判断用户是不是登陆的主要内容,如果未能解决你的问题,请参考以下文章
DW做的HTML登陆网页 SQL数据库 现在已经设计好了用户密码表和网页 怎样能验证数据库中密码并登陆成功