.net中怎样 判断用户是不是登陆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net中怎样 判断用户是不是登陆相关的知识,希望对你有一定的参考价值。

.net中怎样判断用户是否登陆.
我做了几个页面,想通过判断用户是否登陆来控制使用者权限,但不知道怎么做.请举个例子请明.谢谢.
我做的是一般的网站的会员登陆.就是想区别会员和一般游客的权限功能.并且,如果会员登陆了,在每个页面都会显示会员的相关信息.
如果用session的话常常会在登陆之后不久出现session信息丢失.这又怎么解决呢?

登陆的代码我会,我是想判断用户是否登陆来控制权限.

form验证怎么用?我没用过,可不可以给点例子.

对于你说的FORMS
首先
在你的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数据库 现在已经设计好了用户密码表和网页 怎样能验证数据库中密码并登陆成功

asp.net判断用户登录错误次数3次,就不能在登陆了!

小程序 判断是不是为新用户 登陆授权 封装request请求

web前端面试题@十九(怎么判断用户是不是处于登陆状态?)

asp.net,密码5次错误就15分钟内禁止登录

Asp.Net中Ajax实现登陆判断