我有一个 Web 控制面板,其中包含指向敏感信息(如信用卡号)的链接。当用户单击(之前登录过)这些链接之一时,我需要检查他的凭据。
当他请求(“/sensitive-informations.aspx”)他刚刚输入了他的凭据时,我如何确保在服务器端?
编辑:这里的主要问题是“他刚刚输入了他的凭据”,我需要确保他直接来自登录页面。
我有一个 Web 控制面板,其中包含指向敏感信息(如信用卡号)的链接。当用户单击(之前登录过)这些链接之一时,我需要检查他的凭据。
当他请求(“/sensitive-informations.aspx”)他刚刚输入了他的凭据时,我如何确保在服务器端?
编辑:这里的主要问题是“他刚刚输入了他的凭据”,我需要确保他直接来自登录页面。
有几种方法可以做到这一点。例如,在用户输入他的凭据后,将它们保存在Session 对象中。
然后,在Page_Load
sensitive -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
不为空......
您可以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.UrlReferrer
或Page.PreviousPage
)结合起来。