Вход-выход в asp.net - PullRequest
       3

Вход-выход в asp.net

0 голосов
/ 27 августа 2011

У меня есть страница входа, которая отлично работает.Я хотел бы получить вашу помощь, как я могу выйти из системы.Я отправляю вам класс CustomerLogin.cs, который я создал.Логин1, который у меня есть, является вызовом моего веб-сервиса.Может кто-нибудь сказать мне, что делать?

public partial class CustomerLogin : System.Web.UI.Page
{
    protected login1.login CustomerLog;

    public CustomerLogin()
    {
        Page.Init += new System.EventHandler(Page_Init);
    }

    private void Page_Load(object sender, System.EventArgs e)
    {
        if (Session["userId"] != null)
        {
            Server.Transfer("FirstPage.aspx");
        }

    }

    private void Page_Init(object sender, EventArgs e)
    {
        //
        // CODEGEN: This call is required by the ASP.NET Web Form Designer.
        //
        InitializeComponent();
    }

    #region Web Form Designer generated code
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
        this.submitCusLogin.Click += new System.EventHandler(this.submitCusLogin_Click);
        this.Load += new System.EventHandler(this.Page_Load);

    }
    #endregion

    private void submitCusLogin_Click(object sender, System.EventArgs e)
    {
        string customerEmail;
        string customerPassword;

        customerEmail = txtEmail.Text;
        customerPassword = txtPassword.Text;

        //Make a call to the Web Service Login
        CustomerLog = new login1.login();
        //Access the Web method Customer_Details
        string getId = CustomerLog.Customer_Details(customerEmail, customerPassword);
        //Return a value.Check the value of the variable resultId and
        //either grant the customer access or return an error message.
        if (getId == "-1")
        {
            loginLabel.Text = "Invalid Login please re-enter your password and email!";


        }
        else
        {
            loginLabel.Text = "Welcome";
            Session["userId"] = int.Parse(getId);
            Server.Transfer((string)Session["return2Page"]);
        }


    }

} 

Ответы [ 3 ]

0 голосов
/ 27 августа 2011

Session.Abandon () завершит сеанс.

0 голосов
/ 31 января 2013

То, как я это делаю, таково.

Сначала я поместил все переменные Session в статический класс. Таким образом, у меня нет непересекающихся строк повсюду (имена переменных сеанса).

namespace MyCompany.Applications.MyApplication.Presentation.Web.Keys
{
    internal static class SessionVariableKeys
    {
        internal static readonly string USER_ID = "UserId";
        internal static readonly string RETURN_TO_PAGE = "return2Page";
    }
}

Затем я использую статический вспомогательный метод для "очистки вещей".

namespace MyCompany.Applications.MyApplication.Presentation.Web.Helpers
{

    internal static class SessionHelpers
    {

        internal static void LogoutUser(System.Web.HttpContext context)
        {
            context.Session[SessionVariableKeys.USER_ID] = null;
            context.Session[SessionVariableKeys.RETURN_TO_PAGE] = null;
            /* or */
            context.Session.Remove(SessionVariableKeys.USER_ID);
            context.Session.Remove(SessionVariableKeys.RETURN_TO_PAGE);
            /* or */
            context.Session.RemoveAll();
            /* and */
            /* icing on the cake */
            context.Session.Abandon();

            context.Response.Redirect("SomePage.aspx");
        }

    }
}

Затем в коде любой страницы asp.net (файл .cs) я могу вызвать эту процедуру.

namespace MyCompany.Applications.MyApplication.Presentation.Web
{
    public partial class MyPage : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
            }
        }

        private void LogoutUser()
        {
            Helpers.SessionHelpers.LogoutUser(this.Context);
        }
}

Всякий раз, когда я добавляю значение в SessionVariableKeys, я знаю, что мне нужно перейти в SessionHelpers, чтобы добавить строку к двум в процедуру очистки.

Это предотвращает "упс, я забыл о переменной сеанса YadaYadaYada.

Предотвращает синтаксические ошибки с этим стилем:

string myUserID = Session["userId"];

и позже

string myValue = string.Empty;
Session["user1d"] = myValue;

(Ака, глупая синтаксическая ошибка, которая может испортить вещи). (Обратите внимание на букву I против цифры 1).

Я просто предпочитаю приятные маленькие аккуратные "вспомогательные" методы ... вместо того, чтобы код был разбит повсюду. И «передача контекста во вспомогательный метод» - маленькая хитрость, чтобы это сделать.

Удачи в ваших начинаниях.

0 голосов
/ 27 августа 2011

попробуйте удалить Session ["userId"] с помощью Session.Remove("userId") и перенаправить на страницу входа, я не уверен в способе входа в систему, что вы делаете.если вы меняете статус входа в систему с помощью этого метода, вам необходимо сбросить его снова в методе выхода из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...