【问题标题】:session in asp.net C#asp.net C#中的会话
【发布时间】:2010-12-13 16:09:25
【问题描述】:

基本上我有3个页面,登录页面,主页和注册页面。

我的用户有 2 个访问级别,管理员和用户。

管理员可以进入注册页面,用户不能。

在登录页面,有 2 个会话,名称和角色。

在页面加载时,我清除了两个会话。

如果登录成功,我填写的值。

我的问题是..

我以管理员身份登录,Session["Name"]="admin";会话["角色"]="管理员";

我进入主页,然后进入带有超链接的注册页面。 (仅对管理员启用)

在注册页面加载时,我会检查角色。如果无法访问,我会重定向到主页。

每个页面都有登出超链接。

我会将该链接重定向到登录页面。

当我在加载登录页面时清除会话值时,它们都清除了。

当我进入管理页面时,我复制了 URL。

我注销并以具有用户访问权限的其他人身份登录。

我转到主页。

由于超链接被禁用,我无法进入注册页面。

但是当我粘贴网址时,它可以进入注册页面。

只有当我点击某些东西时,它才会重定向到主页,因为 page_load 函数不是第一次运行。

有什么想法吗?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    从您的解释看来,这实际上很有可能是浏览器缓存页面而不是发送请求。尝试在页面上打印用户名,看看当你再次点击 url 时它是否会改变。您还可以使用 Firebug、IE9 Dev Tools、Fiddler 等工具来查看是否发送了请求。

    顺便说一句,考虑使用 Membership 和 Role 提供程序,而不是在会话中粘贴内容 (http://odetocode.com/articles/427.aspx)

    【讨论】:

    • 不,它是旧用户名。不是新的。我忘了提那个。这就是为什么我认为他们从不运行 page_load 函数,因为我更改了该函数中的用户名。
    • 原来是浏览器缓存,不是吗?你得到旧的一切,服务器代码不运行。尝试在您完全未登录时打开该页面。尝试在 IE 中打开它(我注意到 IE 不喜欢缓存整个页面,而其他浏览器则这样做)
    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2012-05-07
    • 2016-06-20
    相关资源
    最近更新 更多