2013-02-19 130 views
-1

我有一个带有敏感信息链接的Web控制面板(如信用卡号码)。 当用户点击其中一个链接时(之前登录的人),我需要检查他的信用。如何确保用户刚刚登录?

当他请求(“/sensitive-informations.aspx”)他刚刚输入凭据时,我如何确定服务器端?

编辑:这里的主要问题是“他刚刚进入他的凭据”,我需要确保他直接从登录页面。

+0

你用什么来验证用户?您可以在链接点击时调用服务或http处理程序,并检查当前用户的凭证。 – 2013-02-19 09:00:08

+0

@krshekhar这里的问题不是如何登录用户,而是我怎么知道他只是(上一页)输入了他的凭据 – 2013-02-19 10:03:54

+0

@remobourgarel为什么不从上一页发送这些值。并检查页面加载 – 2013-02-19 11:22:41

回答

1

有几种方法可以做到这一点。例如,在用户输入他的凭证后,将它们保存在Session object中。

然后,在Page_Loadsensitive-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不空第一...

+0

我知道如何限制对页面的访问,但我需要确保用户直接来自登录页面。 – 2013-02-19 10:02:08

+0

好吧,更新我的回答 – Blachshma 2013-02-19 10:11:58

+0

因为我对安迪说,我们首先虽然这个解决办法,但一些杀毒软件起飞的引荐,我们can'thave少数用户(甚至0.1%),无法看到这个页面。 – 2013-02-19 10:18:08

0

您可以检查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.UrlReferrerPage.PreviousPage)进行检查。

+0

虽然,但一些防病毒软件会将引用者脱掉,我们可以让一些用户(甚至0.1%)无法看到这个页面。 – 2013-02-19 10:17:33

相关问题