我有一个带有敏感信息链接的Web控制面板(如信用卡号码)。 当用户点击其中一个链接时(之前登录的人),我需要检查他的信用。如何确保用户刚刚登录?
当他请求(“/sensitive-informations.aspx”)他刚刚输入凭据时,我如何确定服务器端?
编辑:这里的主要问题是“他刚刚进入他的凭据”,我需要确保他直接从登录页面。
我有一个带有敏感信息链接的Web控制面板(如信用卡号码)。 当用户点击其中一个链接时(之前登录的人),我需要检查他的信用。如何确保用户刚刚登录?
当他请求(“/sensitive-informations.aspx”)他刚刚输入凭据时,我如何确定服务器端?
编辑:这里的主要问题是“他刚刚进入他的凭据”,我需要确保他直接从登录页面。
有几种方法可以做到这一点。例如,在用户输入他的凭证后,将它们保存在Session object中。
然后,在Page_Load
的sensitive-informations.aspx确保Session对象存在。
为了更好地说明这一点:
在你login.aspx.cs页:在你的敏感,informations.aspx.cs
protected btnLoginClick(...)
{
// CHECK USERNAME and PASSWORD
if (UserIsAuthenticated)
{
Session["UserName"] = user;
}
}
然后
protected page_load(...)
{
// If UserName doesn't exist in Session, don't allow access to page
if (Session["UserName"] == null)
{
Response.Redirect("INVALID_USER.aspx");
}
}
编辑:
根据OP的评论,如果你想要知道您来自哪个页面,您可以使用: Page.PreviousPage这样的:
protected void Page_Load(object sender, EventArgs e)
{
var x = this.Page.PreviousPage;
或使用Request.UrlReferrer这样的:
protected void Page_Load(object sender, EventArgs e)
{
var x = Request.UrlReferrer;
在这两种情况下,确保x
不空第一...
我知道如何限制对页面的访问,但我需要确保用户直接来自登录页面。 – 2013-02-19 10:02:08
好吧,更新我的回答 – Blachshma 2013-02-19 10:11:58
因为我对安迪说,我们首先虽然这个解决办法,但一些杀毒软件起飞的引荐,我们can'thave少数用户(甚至0.1%),无法看到这个页面。 – 2013-02-19 10:18:08
您可以检查Page_Load
事件sensitive-informations.aspx
中的UrlReferrer
:
if (Request.UrlReferrer != null)
{
if (Request.UrlReferrer.AbsolutePath.ToLower().Contains("you-login-page"))
{
//User came from the login page
}
}
UPDATE 基于您的评论,你应该检查的MembershipUser class
这个LastLoginDate
属性会给你的,好了,上次登录的当前用户的日期。您可以将其与当前日期/时间进行比较,以确保用户“刚刚输入了他们的凭据”。将此与检查用户来自哪里(使用Request.UrlReferrer
或Page.PreviousPage
)进行检查。
虽然,但一些防病毒软件会将引用者脱掉,我们可以让一些用户(甚至0.1%)无法看到这个页面。 – 2013-02-19 10:17:33
你用什么来验证用户?您可以在链接点击时调用服务或http处理程序,并检查当前用户的凭证。 – 2013-02-19 09:00:08
@krshekhar这里的问题不是如何登录用户,而是我怎么知道他只是(上一页)输入了他的凭据 – 2013-02-19 10:03:54
@remobourgarel为什么不从上一页发送这些值。并检查页面加载 – 2013-02-19 11:22:41