zoukankan      html  css  js  c++  java
  • 基类中SESSION与COOKIE双重用户身份验证

    网站中使用SESSION或COOKIE来进行用户身份验证是必要的事情,常用的做法便是写一个基类,所有需要用到身份验证的页面统统继承这个页面,由于之前使用的是COOKIE,这次加入了SESSION,两者一起来进行判断,出问题了,什么问题呢?听我慢慢道来!

    首先跟大家讲讲关于SESSION与COOKIE的相关知识,如果对这一块了解比较透彻的人可以略过此段。

    SESSION的存储--存储在服务器端:(SESSION的三种存储模式)

    1.存储在网站的进程中(大家知道asp.net应用程序网站运行时都会开启一个W3WP.exe进程,SESSION的生命周期便与此进程共存亡)

    2.存储在STATE SERVER进程中(这是asp.net服务中一个单独的进程:aspnet_state.exe)

    3.序列化存储在SQL SERVER中

    SESSION的过期:

    SESSION的默认过期时间为20分钟,这个可以通过IIS来进行设置,也可以通过在APP.CONFIG中进行配置,SESSION采用的是平滑过期策略,何谓平滑过期?在SESSION的默认过期时间内,如果客户端和服务器端有过联系,那么此时间将会自动默认向后延期默认过期时间,如果在过期时间内客户端没有任何动作,那么此SESSION就过期了。

    COOKIE的存储:

    COOKIE存储在客户端,用户可以通过程序在写入COOKIE值时来定义该COOKIE的过期时间、所属的域。

    COOKIE的过期:

    COOKIE的过期时间为用户在写入COOKIE时自定义的COOKIE过期时间。

    对SESSION及COOKIE作了简单的解释之后,接下来讲讲上面提到的实际应用过程中碰到的问题。

    基类中对用户权限的验证放在基类的构造函数中,此时报错了,具体错误这里就不贴出了,因为事情已经过去一段时间了,当初也没把错误保存下来。然后将错误GOOGLE了一下,基本上都说网站禁用了SESSION值,或者说建议使用STATE SERVER方式来进行存储,觉得都不太可能,因为在两个页面间使用SESSION传值是没有任何问题的,突然想到是不是在基类的构造函数中SESSION的生命周期还没开始,判断正确,唉,居然犯这么初级的错误。针对这个问题,又是如何解决的呢?

    在基类中添加事件监听,事件方法为Page_Load,在Page_Load方法中放入原来基类构造函数中的用户权限验证方法。

  • 相关阅读:
    杭电OJ 输入输出练习汇总
    七月读书笔记
    情报分析报告阅读笔记
    情报研究与分析入门阅读笔记
    旁观者攻击
    域前置技术相关学习
    CC攻击和C2的区别
    DNS投毒学习分析总结
    数字证书2.0版本学习总结
    《在树洞里》-感悟
  • 原文地址:https://www.cnblogs.com/zengen/p/1863023.html
Copyright © 2011-2022 走看看