передавать значения или данные с одной страницы на другую при использовании элемента управления входом в ASP.NET 2.0.

StackOverflow https://stackoverflow.com/questions/620134

  •  03-07-2019
  •  | 
  •  

Вопрос

Я использую контроль входа в систему, доступный в ASP.NET 2.0, на странице входа.После успешной аутентификации пользователя в базе данных я перенаправляю его на home.aspx.Здесь я также хочу передать имя пользователя в файл home.aspx, чтобы имя пользователя встречалось в файле home.aspx.Бывший:Добро пожаловать, Смит

Я извлекаю имя пользователя из таблицы пользователей в моей базе данных во время проверки учетных данных для входа.

Может кто-нибудь сказать мне, как это сделать безопасным способом (может быть, не безопасным, но немного)?

Спасибо,

Это было полезно?

Решение

Одно хорошее место для такого рода данных будет в сессии. Попробуйте что-нибудь подобное на первой странице:

this.Session["UserName"] = userName;

, а затем последующие страницы в этом сеансе для этого пользователя могут получить доступ к this.Session [" имя пользователя "] .

Лучше всего создать статический класс для управления Session для вас следующим образом:

using System;
using System.Web;

static class SessionManager
{
    public static String UserName
    {
        get
        {
            return HttpContext.Current.Session["UserName"].ToString();
        }
        set
        {
            HttpContext.Current.Session["UserName"] = value;
        }
    }

        // add other properties as needed
}

Тогда ваше приложение может получить доступ к состоянию сеанса следующим образом:

SessionManager.UserName

Это даст вам максимальную гибкость и масштабируемость в будущем.

Другие советы

Если вы используете стандартную аутентификацию asp.net, вы сможете получить доступ к имени пользователя через свойство User объекта страницы.

Пользователь.Идентификация.Имя

Как предположил Эндрю, сеанс — это обычное место для размещения имени пользователя, хотя я вообще избегаю использования сеанса, если это возможно.

Вы можете установить файл cookie с именем пользователя.

Вы также можете установить свойство DestinationPageUrl элемента управления входом, чтобы включить имя пользователя в строку запроса.Хотя это кажется/выглядит довольно отстойно.

As ScottS сказал, что если вы используете стандартные элементы управления входом в систему и поставщик членства, эта информация уже доступна вам в User.Identity.Name.

Единственная причина, по которой я публикую ответ, - упомянуть элемент управления LoginName , который вы можете перетащить на страницу / главную страницу и сделать это автоматически для вас:

<asp:LoginName id="LoginName1" runat="server" FormatString ="Welcome, {0}" />

Это выдаст " Добро пожаловать, Zhaph " когда пользователь вошел в систему, или ничего, если они не.

Вы также можете прекрасно сочетать это с LoginView и LoginStatus контролирует:

<asp:LoginView ID="RegisterLink" runat="server">
  <AnonymousTemplate>
    <div class="titleRegistration">
      <a href="/Users/Register.aspx">Register</a> or 
    </div>
  </AnonymousTemplate>
  <LoggedInTemplate>
    <div class="titleRegistration">
      Welcome back
        <asp:LoginName ID="LoginName1" runat="server" /> -
    </div>
  </LoggedInTemplate>
</asp:LoginView>
<asp:LoginStatus ID="lsGeneral" runat="server"
  LogoutPageUrl="/Users/Logout.aspx" />

Эта комбинация элементов управления будет выполнять следующие действия:

<Ол>
  • Если пользователь не вошел в систему, отобразите: зарегистрируйтесь или войдите в систему
  • Если пользователь вошел в систему, отобразите: добро пожаловать обратно, Zhaph - выход из системы
  • Ссылки входа в систему заполняются настройками в файле web.config и генерируются элементом управления LoginStatus.

    да, как сказал Эндрю, сессия является основным местом для хранения конфиденциальных данных.

    но почему имя пользователя чувствительно? Вы можете сохранить его в файле cookie и распечатать его в своем home.aspx всякий раз, когда пользователь входит.

    РЕДАКТИРОВАТЬ: Вы можете использовать файлы cookie в ASP.NET следующим образом:

    // Setting cookie : 
    Response.Cookies["UserName"].Value = "Erhan";
    Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(7); // Persists 1 week
    
    // Getting cookie : 
    string username = string.Empty;
    if(Request.Cookies["UserName"] != null)
    {
        username = Server.HtmlEncode(Request.Cookies["UserName"].Value);
    }
    

    ПРИМЕЧАНИЕ. Файлы cookie хранятся на компьютере клиента. поэтому вы не должны использовать их для хранения конфиденциальных данных.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top