-1

我有一个 Web 控制面板,其中包含指向敏感信息(如信用卡号)的链接。当用户单击(之前登录过)这些链接之一时,我需要检查他的凭据。

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

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

4

2 回答 2

1

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

然后,在Page_Loadsensitive -informations.aspx中确保Session 对象存在。

为了更好地说明这一点:

在您的 login.aspx.cs 页面中:

protected btnLoginClick(...)
{
   // CHECK USERNAME and PASSWORD
   if (UserIsAuthenticated)
   {
      Session["UserName"] = user;
   }
}

然后在你的sensitive-informations.aspx.cs

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");
    }

}

编辑:

根据 OPs 的评论,如果你想知道你来自 哪个页面,你可以使用: 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-19T08:57:44.683 回答
0

您可以UrlReferrer在以下情况Page_Load下检查sensitive-informations.aspx

if (Request.UrlReferrer != null)
{
     if (Request.UrlReferrer.AbsolutePath.ToLower().Contains("you-login-page"))
     {
        //User came from the login page
     }
}

更新 根据您的评论,您应该检查MembershipUser 类LastLoginDate的属性

这将为您提供当前用户的最后登录日期。您可以将其与当前日期/时间进行比较,以确保用户“刚刚输入了他们的凭据”。将此与检查用户来自哪里(使用Request.UrlReferrerPage.PreviousPage)结合起来。

于 2013-02-19T10:10:22.517 回答