2013-02-19 3 views
-1

У меня есть веб-панель управления со ссылками на конфиденциальную информацию (например, номер кредитной карты). Когда пользователь нажимает (кто ранее зарегистрировался) по одной из этих ссылок, мне нужно проверить его учетные данные.Как сделать так, чтобы пользователь только что вошёл в систему?

Как я могу убедиться на стороне сервера, когда он запрашивает («/sensitive-informations.aspx»), что он только что ввел свои учетные данные?

EDIT: главная проблема здесь заключается в том, что «он только что ввел свои учетные данные», мне нужно убедиться, что он НАСТОЯТЕЛЬНО прибывает с страницы входа.

+0

Что вы используете для аутентификации пользователя? Вы можете вызвать службу или http-обработчик при щелчке ссылки и проверить учетные данные текущего пользователя. –

+0

@krshekhar проблема здесь не в том, как зарегистрировать пользователя, но откуда я знаю, что он просто (предыдущая страница) ввел свои учетные данные –

+0

@remobourgarel, почему вы не отправляете это значение с предыдущей страницы. и проверить на загрузку страницы –

ответ

1

Существует несколько способов сделать это. Например, после того, как пользователь вводит свои учетные данные, сохраните их в Session object.

Затем в Page_Load от sensitive-informations.aspx убедитесь, что объект Session существует.

Чтобы лучше проиллюстрировать это:

В вашей странице login.aspx.cs:

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

Тогда в ваших чувствительных-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"); 
    } 

} 

Edit:

Основано на комментариях 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 не нулевой в первую очередь ...

+0

Я знаю, как ограничить доступ к странице, но я должен убедиться, что пользователь приходит непосредственно со страницы входа. –

+0

Хорошо, обновляя свой ответ – Blachshma

+0

, как я уже сказал Энди, мы сначала об этом решении, но какое-то антивирусное программное обеспечение снимает реферирование, и мы можем заставить некоторых пользователей (даже 0,1%) не увидеть эту страницу. –

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 
    } 
} 

UPDATE Основываясь на ваш комментарий, вы должны проверить LastLoginDate свойство MembershipUser class

на это даст вам, ну, дата последнего входа в систему текущего пользователя. Вы можете сравнить это с текущей датой/временем, чтобы убедиться, что пользователь «просто ввел свои учетные данные». Соедините это с проверкой, откуда пришел пользователь (либо с Request.UrlReferrer, либо Page.PreviousPage).

+0

Мы сначала, хотя это, но это некоторые антивирусные программы снимают референта, и мы можем заставить нескольких пользователей (даже 0,1%) не увидеть эту страницу. –