ASP.NET 如何控制用户绕过登录直接进入登录后的界面?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET 如何控制用户绕过登录直接进入登录后的界面?相关的知识,希望对你有一定的参考价值。

就是说我在1.aspx输用户名密码,然后进到2.aspx。但直接在地址栏输2.aspx也是一样。请问要怎么控制?
网上查了说用SESSION,,可是我也不会。。。:(
还请高手不吝赐教!
最好是写的详细些,全一些。。。谢谢!!!
就像下面的代码:
loginnew.asp网页
<%
dim username,password

username=request.form("username")
password=request.form("password")
set rs=server.createobject("adodb.recordset")
conn = "DBQ=" + server.mappath("huiyuan.mdb") + ";DefaultDir=;
DRIVER=Microsoft Access Driver (*.mdb);"
sql="select * from pUser213 where y_username='"&username&"'"
rs.open sql,conn,1,1
if rs.eof then
response.write "<script>alert('登录失败');history.back();</script>"
response.end
else
if rs("y_password")<>password then
response.write "<script>alert('登录失败');history.back();</script>"
response.end
end if
session("admin")=username
response.write"<script>alert('登录成功');location.href='index.asp'</script>"
end if
%>
突然地在最后出来个SESSION,,,这玩艺怎么定义的。。。
高手见笑,太菜,一点也不懂。还请详细解说!!!
另外,网上搜了一天了没搞明白才来这里请教的。

参考技术A web。config
里面进行配置
验证cookies
如果为空 就指向自定义页面
就ok了
至于怎么配置 网上一堆

登录asp.net后如何更改会话ID

【中文标题】登录asp.net后如何更改会话ID【英文标题】:how to change session id after login in asp.net 【发布时间】:2010-11-28 00:10:42 【问题描述】:

我有一个使用表单身份验证和成员资格的网站。用户必须启用 cookie 才能使用该网站。我被要求更改代码,以便在用户登录后立即更改会话 ID。显然,这将防止会话固定攻击 (http://en.wikipedia.org/wiki/Session_fixation)。有谁知道我如何在不丢失整个会话的情况下更改会话 ID? PHP 有执行此操作的特定方法,但我找不到 .NET 等效项。

【问题讨论】:

【参考方案1】:

Here's a blog post 谈到这个:

ASP.NET 不直接支持 重新生成会话的功能 ID。请参阅有关的文档 问题here。有一个not-so quick and dirty way 可以通过 将ASPNET_SessionID 值设置为 空字符串和重定向所以 该值已重新生成。

【讨论】:

我也想过这个,但是重新生成之后,会话对象中的所有对象都会丢失...... 您链接到的博文不再可用。【参考方案2】:

我在Generating a new ASP.NET session in the current HTTPContext 回答了类似的问题。基本上我们必须更改一些 SessionStateModule 内部状态,以便能够重新生成会话 ID 而不会丢失 Session 中的对象。我使用反射将 _rqId 字段设置为新 ID,并将 _rqSessionStateNotFound 设置为 true。缺点是我们必须向应用程序授予“完全信任”。

【讨论】:

accepted answer 引用了一篇针对 .NET 1.1 的文章(它实际上并没有解决会话固定问题,只是旧会话 ID 重用),但是这个解决方案更优雅,并且在我们的 . NET 4.5 应用程序(一个 MVC 站点和一个 Web 窗体站点)。【参考方案3】:

这是一个非常古老的问题,我正在复活,但这里是解决方案:

var manager = new SessionIDManager();
bool redirected, isAdded;
manager.SaveSessionID(System.Web.HttpContext.Current, 
    "5vonjb4mtb1of2fxvhjvkh5d", out redirected, out isAdded);

// sessionId now equals "5vonjb4mtb1of2fxvhjvkh5d"
var sessionId = Session.SessionID;

【讨论】:

我知道,已经有一段时间了。但是我们尝试了您的代码,但它对我们不起作用。 sessionId 不等于“5vonjb4mtb1of2fxvhjvkh5d”。 我成功地做到了这一点。 sessionid 确实更改为新的 sessionid。 这让我们更接近但还不够接近 - 仍在努力。这确实会更新会话 ID 并像您期望的那样发送 cookie 更新,但我们仍然希望在同一请求期间使用会话。我们现在无法做到这一点 - 会话包似乎是前一个;下一个请求会看到新的会话包,但我们的值不存在。

以上是关于ASP.NET 如何控制用户绕过登录直接进入登录后的界面?的主要内容,如果未能解决你的问题,请参考以下文章

selenium:python如何绕过登录页面登录网页

在asp.net mvc中注册成功(重定向到登录)后用户名自动填写登录页面

ASP.NET Core MVC,用户登录后限制查看

ASP.Net Core - 登录后如何等待用户身份立即可用?

登录 ASP.NET Core 3.1 后如何获取用户信息

登录后在 ASP.NET 页面中隐藏导航