将会话变量与字符串C#进行比较

时间:2017-11-17 14:45:31

标签: c# asp.net .net session variables

string currentUser;
string currentPassword;
string getUserName;
string getPassword;

getUserName = Convert.ToString(Session["UserName"]);
getPassword = Convert.ToString(Session["Password"]);

currentUser = Convert.ToString(txtUserNameLogIn.Text);
currentPassword = Convert.ToString(txtPasswordLogin.Text);

if ((currentUser == getUserName ) && (currentPassword == getPassword)) {
    currentUser = Convert.ToString(Session["CurrentUser"]);
    currentPassword = Convert.ToString(Session["CurrentPassword"]);
    Response.Redirect("Home.aspx");
} else {
    lblResult.Text = "Invalid Password";

}

我有3页。第一个用于注册,保存UserName和Password所以一个Session,然后我有登录页面,应该采取UserName和Password会话,并将它们与此页面上的当前用户输入进行比较。到目前为止,我没有收到任何回复。

编辑:我在上一页上输入的用户名和密码存储在名为" UserName"的会话变量中,该人被重定向到登录页面,我只想比较哪些用户类型使用上一页的会话变量,如果正确,请将该信息存储在新的会话变量中,并将用户重定向到主页。

1 个答案:

答案 0 :(得分:0)

你可以在这里做一些工作,假设这是一个测试项目,你知道Session不是存储纯文本凭证的正确位置。请查看SimpleMembership以获得更清晰的方法。

我创建了两个扩展类。第一个负责字符串安全性,第二个负责Session。您可以更进一步,为键或甚至SessionUser对象创建常量。在比较方面,我只是结合了用户名+密码,所以逻辑很短。

 public static class StringExtensions
{
    public static string Encrypt(this string plainText)
    {
        // Replace with your encryption impl
        return plainText;
    }

    public static string Decrypt(this string hiddenText)
    {
        // Replace with your decryption impl 
        return hiddenText;
    }
}

public static class SessionExtensions
{
    public static void Set<T>(this HttpSessionState sessionState, string key, T value)
    {
        sessionState[key] = value;
    }

    public static T Get<T>(this HttpSessionState sessionState, string key) where T : class
    {
        return (T)sessionState[key];
    }
}

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Session.Set("UserName", "something");
        Session.Set("Password", "something".Encrypt());

        var username = Session.Get<string>("UserName");
        var password = Session.Get<string>("Password").Decrypt();

        var savedUser = $"{username}{password}";
        var currentUser = $"somethingsomething";

        if (currentUser.Equals(savedUser, StringComparison.InvariantCultureIgnoreCase))
        {

        }
        else
        {

        }
    }
}