身份验证用什么最稳定?为什么我设的Session不能保持?

问题描述

我想做一个多人访问的网站,用的是ASP.NET2008的,用的Session来保存用户的身份和状态,发布到网上发现大部用户可以正常访问,但一小部分用户的机器总是无法正常登录,每次登录后都会象没登录一样,重新回到登录页(预设没登录自动跳到登录页)。请各位大侠帮忙分析下,是什么原因?用什么方法更好?附代码如下stringgetUID=Request.QueryString["UID"].ToString();stringgetPWD=Request.QueryString["PWD"].ToString();Response.ContentType="text/xml";//-------------SqlConnectionConn=newSqlConnection(MyConnectionString);stringqueryString="SELECTUserID,Pwd,Name,uRole,isTry,LoginCount,EndDTime,AllowUse,getdate()asDTNowDateFROMUserInfo"+"WHERE(UserID=@UID)";SqlCommandCommand=newSqlCommand();Command.Connection=Conn;Command.CommandType=CommandType.Text;Command.CommandText=queryString;SqlParameterParameter_userid=newSqlParameter();Parameter_userid.ParameterName="@UID";Parameter_userid.Value=getUID;Parameter_userid.DbType=DbType.StringFixedLength;Command.Parameters.Add(Parameter_userid);BooleanisHaveID=false;BooleanisLogin=false;Conn.Open();try{SqlDataReaderRd=Command.ExecuteReader();if(Rd.Read()){if(Rd["Pwd"].ToString().Trim()==getPWD.Trim()){DateTimefDTNowDate=(DateTime)Rd["DTNowDate"];DateTimefEndDTime=(DateTime)Rd["EndDTime"];BooleanfAllowUse=(Boolean)Rd["AllowUse"];fisTry=(Boolean)Rd["isTry"];fLoginCount=Rd["LoginCount"].ToString();isLogin=true;//密码通过,下面还要进行其它验证resuInfo="OK";stringUqueryString="";//1.是否试用,第一次登录---暂不进行检查到期与限制if(fisTry&fLoginCount=="0"){//从当前时间更改到期+15天//UqueryString="UPDATEUserInfoSETLastDTime=getdate(),LoginCount=LoginCount+1,EndDTime=getdate()+15WHEREUserID=@UserID";UqueryString="UPDATEUserInfoSETLastDTime=getdate(),LoginCount=LoginCount+1,EndDTime=getdate()+tryDaysWHEREUserID=@UserID";}else{UqueryString="UPDATEUserInfoSETLastDTime=getdate(),LoginCount=LoginCount+1WHEREUserID=@UserID";//2.是否到期:帐号已到期,请续费if(fDTNowDate>fEndDTime){//帐号到期resuInfo="帐号已到期,请续费";isLogin=false;}else{//3.是否被限制:此帐号已被限制if(!fAllowUse){//被限制resuInfo="此帐号已被限制";isLogin=false;}}}if(isLogin){Session["UName"]=Rd["Name"].ToString();Session["URole"]=Rd["uRole"].ToString();Session["UID"]=getUID;Session["isLogin"]="TRUE";Session["PID"]="P01";//初始文章}}else{resuInfo="密码不正确";}}else{resuInfo="帐号不正确"+getUID;}}finally{if(Conn!=null){Conn.Close();}}

解决方案

解决方案二:
如果时间保持长的话可以用cookie,用session的时候,要设置持续时间,具体修改方法如下,在web.config中进行如下配置<system.web><sessionStatemode="InProc"timeout="30"/>//修改timeout时间</system.web>
解决方案三:
<sessionStatemode="Off|InProc|StateServer|SQLServer"cookieless="true|false"timeout="numberofminutes"stateConnectionString="tcpip=server:port"sqlConnectionString="sqlconnectionstring"stateNetworkTimeout="numberofseconds"/>必须有的属性是属性选项描述mode设置将Session信息存储到哪里Off设置为不使用Session功能InProc设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值。StateServer设置为将Session存储在独立的状态服务中。SQLServer设置将Session存储在SQLServer中。
解决方案四:

解决方案五:
TOchengqscjh:我用的是<sessionStatemode="StateServer"/>资料上说是可以保存在独立进程中,比较稳定如果用的是Cookie的话,如果用户关闭浏览器的Cookie,会不会出问题呢?
解决方案六:
引用4楼gxywl的回复:

TOchengqscjh:我用的是<sessionStatemode="StateServer"/>资料上说是可以保存在独立进程中,比较稳定如果用的是Cookie的话,如果用户关闭浏览器的Cookie,会不会出问题呢?

==从ASP.NET1.1Session就支持无Cookie的回话,此时Sessonid保存在用户的url地址栏里
解决方案七:
Toamandag:这是我用的Web.config部分<sessionStatemode="StateServer"/>。。。<authenticationmode="Window"/>但有部分计算机登录时出现问题。
解决方案八:
<sessionStatemode="Off¦InProc¦StateServer¦SQLServer"cookieless="true¦false"timeout="numberofminutes"stateConnectionString="tcpip=server:port"sqlConnectionString="sqlconnectionstring"stateNetworkTimeout="numberofseconds"/>必须有的属性是属性选项描述mode设置将Session信息存储到哪里Off设置为不使用Session功能InProc设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值。StateServer设置为将Session存储在独立的状态服务中。SQLServer设置将Session存储在SQLServer中。
解决方案九:
TOlingxyd_0:这个楼上发过了
解决方案十:
COOKIE这个好用些,你要是用SQLSERVER做又要加好多的东西
解决方案十一:
(1)Cookie很多用户会禁用,这是部分用户不能使用的原因。如果你在写Cookie时进行验证,则基本不存在什么问题了。(2)SQLServer麻烦一些,但保证一定都可以。
解决方案十二:
sessionmode=sqlserver
解决方案十三:
学习
解决方案十四:
可以用cookie.
解决方案十五:

解决方案:
用传票吧,基于cookie的,又比cookie安全性高
解决方案:
引用15楼Pig23的回复:

用传票吧,基于cookie的,又比cookie安全性高

传票让我想到了法院.................
解决方案:
这个不太清楚,个人一直用Session

时间: 2024-09-09 19:09:57

身份验证用什么最稳定?为什么我设的Session不能保持?的相关文章

浅谈PHP+MYSQL身份验证的方法

mysql 近日在为学校制做校友录时,需要身份验证,在对比之后决定采用PHP+MYSQL进行身份验证. 之前也曾考虑过用cookies或session.但是用cookies,在用户离线再上线后,只要cookies不过期,不用登录仍然可以保持在线,这对于网吧来说是个隐患.而且用户可以关闭cookies,这样身份验证就不成功.也考虑过用session,session在浏览过程中不断的将访问信息加入到session中,如果用户在网站内时间很长,浏览的页面很多,就用导致session越来越大,浏览速度降

Nodejs中session的简单使用及通过session实现身份验证的方法_node.js

session 不用多介绍,使一个http可以对应一个终端用户. session的本质使用cookie来实现. 原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份.把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了.(在PHP,ASP或者其他服务端语言中都自动帮你实现了) 实现cookie 需要为每一个用户设置一个可以标示用户身份的cookie.可以使用如下规则 注册邮箱MD5值+密

无密码身份验证:安全、简单且部署快速

Passwordless authentication: Secure, simple, and fast to deploy [编者按]本文作者为 Florian Heinemann 与 Robert Nyman.Florian 来自 MIT 系统设计与管理学院,专注于复杂的社交技术系统.此前曾在企业软件领域的多家初创公司工作,之后加入 Airbus,担任知识与创新管理经理一职.Robert 是 Mozilla Hacks 技术传道师及编辑.曾就 HTML5,JavaScript 以及 Ope

俺的2003服务器打了SP2补丁后,每次登陆网站都会被重定向回登陆页面(打补丁之前一切正常),网站使用的是Forms身份验证,救命啊

问题描述 俺的2003服务器打了SP2补丁后,每次登陆网站都会被重定向回登陆页面(打补丁之前一切正常),网站使用的是Forms身份验证,救命啊 解决方案 解决方案二:学习ing....,帮顶.解决方案三:这么古怪么?重新上传一份看看.解决方案四:身份验证用的是微软的例子代码,已经稳定运行三年多了,我跟踪代码发现一切正常,只不过身份验证完成之后,跳转到其他页面时,立刻被强制跳回了登陆页面解决方案五:俺做了几次实验,在2003和2003SP1下都正常,SP2下就肯定出这个问题,网站运行在.Net1.

.Net1.1下的Forms身份验证在系统升级到2003SP2后无法登录,哪位老大指点迷津

问题描述 俺的2003服务器打了SP2补丁后,每次登陆网站都会被重定向回登陆页面(打补丁之前一切正常),网站使用的是Forms身份验证,身份验证用的是微软的例子代码,已经稳定运行三年多了,我跟踪代码发现一切正常,只不过身份验证完成之后,跳转到其他页面时,立刻被强制跳回了登陆页面,俺做了几次实验,在2003和2003SP1下都正常,SP2下就肯定出这个问题,网站运行在.Net1.143版本下,哪位高手帮忙解决一下代码如下:FormsAuthentication.RedirectFromLoginP

如何通过SQL Server2000使用Forms 身份验证

  摘要 ASP.NET Forms 身份验证允许用户将凭据(用户名和密码)输入到 Web Form 来标识其身份.在收到这些凭据时,Web 应用程序可以根据数据源来检查这些凭据,从而对用户进行身份验证. 本模块描述如何使用密码哈希安全地将用户凭据存储在 SQL Server 中,以及如何根据包含在 SQL Server 中的帐户数据库对用户进行身份验证. 预备知识 安全地存储用户凭据包含两个关键概念: • 存储密码摘要.出于安全性考虑,请不要将密码明文存储在数据库中.本模块描述如何创建和存储用

ASP.NET七大身份验证方式及解决方案

在B/S系统开发中,经常需要使用"身份验证".因为web应用程序非常特殊,和传统的C/S程序不同,默认情况下(不采用任何身份验证方式和权限控制手段),当你的程序在互联网/局域网上公开后,任何人都能够访问你的web应用程序的资源,这样很难保障应用程序安全性.通俗点来说:对于大多数的内部系统.业务支撑平台等而言,用户必须登录,否则无法访问和操作任何页面.而对于互联网(网站)而言,又有些差异,因为通常网站的大部分页面和信息都是对外公开的,只有涉及到注册用户个人信息的操作,或者网站的后台管理等

asp.net里面的身份验证和授权

今天闲着无聊.想起来了ASP.NET身份验证.感觉良好.贴出下列代码:login.aspx HTML代码 <%@ Page language="c#" Codebehind="02Login.aspx.cs" AutoEventWireup="false" Inherits="身份验证._02Login" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 T

[收藏]使用Reporting Services中的窗体身份验证

services 使用 Reporting Services 中的窗体身份验证发布日期: 8/18/2004 | 更新日期: 8/18/2004Microsoft Corporation 适用范围:Microsoft SQL Server 2000 Reporting Services 摘要:了解有关 Reporting Services 安全扩展方面的知识,着重学习窗体身份验证.此外,下载和部署 Reporting Services 的窗体身份验证扩展示例. 要安装示例代码,请下载 Forms