当前位置:编程学习 > 网站相关 >>

从判断Session[ UserName ].ToString()为null和 所想到的

insun在写基于充值卡的视频点播系统时候 充值时候判断用户登录与否,用到session时候发憷了。

找到这篇文章 果然全面 果然是我想说的。转载之。

从判断Session[UserName].ToString()为null和所想到的 - InSun - Minghacker is Insun

 

------------------------------------------------------------------------------------------------

 

Asp.net安全验证模式提供了验证用户访问的很好模式,但是还有很多情况下需要我们采用传统的Session方式来解决用户登录验证问题,比如一些简单的验证。今天打开CSDN就发现了一个帖子,该帖子的楼主正在利用这种方式验证用户是否登陆,但是在这个过程中出现了错误,具体是怎么回事呢?

原来搂主想写个方法,该方法功能是判断用户是否登陆,如果没登陆,则自动跳转到登陆页面。楼主的具体判断条件是Session[“username”]是否为空,如果Session[“username”].ToString()为null或者为""则表示未登陆,跳转到一个提示页面。具体代码示例如下:

    public int IsUser()

    {

        if (Session["UserName"].ToString() == null || Session["UserName"].ToString() != null && Session["UserName"].ToString() == "")

        {

            //可能非有意的引用比较;若要获取值比较,请将左边转为类型string

            //Response.Redirect   ("../index.aspx");

            //Response.Write(" <script   language=javascript> alert(你不是管理员!);location.href=Default.aspx; </script> ");

            return 1;

        }

        else

        {

            return 0;

        }

    }
    楼主在运行这段代码的时候,vs2005始终出现提示"当前上下文中不存在session",这个是因为相应的代码环境和cs文件的位置所决定的,利用System.Web.HttpContext.Current.Session来调用Session即可。如果了解asp.net底层机制,我们就会发现,Session["UserName"],其实是HttpConText的属性,在aspx文件关联代码中,其提升为Page的属性,所以我们可以如此方便调用,而在非关联代码文件中,则必须通过System.Web.HttpContext.Current.Session方式调用。此时改正后的代码示例如下(不考虑逻辑问题):

    public int IsUser()

    {

        if (System.Web.HttpContext.Current.Session["UserName"].ToString() == null || System.Web.HttpContext.Current.Session ["UserName"].ToString() != null && System.Web.HttpContext.Current.Session ["UserName"].ToString() == "")

        {

            //可能非有意的引用比较;若要获取值比较,请将左边转为类型string

            //Response.Redirect   ("../index.aspx");

            //Response.Write(" <scr

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,