【问题标题】:Comparing Session Variable to a String C#将会话变量与字符串 C# 进行比较
【发布时间】:2018-05-01 09:15:51
【问题描述】:
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”的会话变量中,此人被重定向到登录页面,我只是想比较用户输入的内容与会话变量来自上一页,如果正确,则将该信息存储在新的会话变量中,并将用户重定向到主页。

【问题讨论】:

  • 不要说得太细,我认为您不应该在会话中存储用户名和密码
  • 首先,永远不要以任何形式以纯文本/明文形式保存用户密码。其次,不要像这样滥用会话。有很多好的身份验证和授权框架可供您免费使用并随时可用。做你的研究并使用其中一个,这样你的网站就不仅仅是另一个用户信息的宝库,准备被第一个遇到它的黑客利用。
  • 这只是一个编程课程,我们只是在学习和理解它是如何工作的。
  • 您的前 2 行从会话中检索数据,然后检查输入 current... 是否等于该输入,然后您再次从会话中获取会话内容并设置您的 current.... (这对他们来说是平等的)再次对他们 - 为什么?
  • 这不是问题,而是陈述。您拥有的代码虽然奇怪且非最佳,但似乎可以正常工作,因此我只能建议提供更多上下文。

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


【解决方案1】:

假设这是一个测试项目,并且您知道 Session 不是存储纯文本凭据的正确位置,您可以在这里做几件事。查看SimpleMembership 以获得更简洁的方法。

顺便说一句,我创建了两个扩展类。第一个负责字符串安全,第二个负责会话。您可以更进一步,为键甚至 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
        {

        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2020-07-01
    • 2012-08-05
    • 2015-11-21
    • 2015-08-14
    相关资源
    最近更新 更多