使用 .Net Core 创建会话时未保存会话

我是 .Net 新手,正在构建一个 Web 应用程序,我想在用户登录或注册并确认注册时创建一个会话。为了登录,我有一个剃刀页面:登录,它只是提示用户输入他们的用户名和密码,这些用户名和密码应该在我的sql服务器中并经过验证。一旦检查到有效用户标志正确,我想创建会话并将用户发送到索引。然后在索引中,我想查看会话是否已创建,并且想读取会话中的值并将其显示到索引视图上,以确认已捕获用户信息。

我的 Login.cs 文件如下所示:


 public ActionResult OnPost(string UserName, string Password)

        {


            if (!ModelState.IsValid)

            {

                return Page();

            }


            if(accountService.ValidateUserLogin(UserName, Password) == 1)

            {


                string Email = accountService.UsernameGetEmail(UserName);

                HttpContext.Session.SetString(Email, TempData["email"].ToString());

                return RedirectToPage("/Index");

            }

            else

            {

                //report error to user

                return Page();

            }

        }

这是我尝试在 Index.cs 页面中捕获会话信息的地方:


public void OnGet()

        {

            if (HttpContext.Session.Id != null)

            {

                SessionEmail = HttpContext.Session.GetString("Email");

                ViewData["SessionEmail"] = SessionEmail;

            }

        }

这是我尝试将 SessionEmail 显示到视图上的 html 片段,但在 index.cs 文件内初始化 SessionEmail 时它为空。


<div>

    @{ 

        if( ViewData["SessionEmail"] != null)

        {

        <p> Hello! @ViewData["SessionEmail"].ToString() </p>

        }

    }

</div>

希望您能指出我的错误以及我如何尝试建立会话。在我能够设置会话后,我将编辑我的布局的导航栏,以便如果用户是否登录,它就会改变,所以也许您可以指出我如何通过会话来解决这个问题也许会很棒:httpcontext.session.IsAvailable?另外,我的启动中也有 addSession 和 useSession 。


慕娘9325324
浏览 78回答 1
1回答

湖上湖

尝试这个:HttpContext.Session.SetString("Email", Email);原因是您在此处获取用户的电子邮件地址:string Email = accountService.UsernameGetEmail(UserName);然后您尝试使用 SetString 扩展方法将其保存到会话中。该方法将 key 作为第一个参数,将 value 作为第二个参数。稍后,您将使用“Email”的 调用 GetString 扩展方法:keySessionEmail = HttpContext.Session.GetString("Email");因此您需要将 value 设置为相同的 key:
打开App,查看更多内容
随时随地看视频慕课网APP