为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕娘9325324 2023-12-17 16:49:50
我是 .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 。
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

尝试这个:

HttpContext.Session.SetString("Email", Email);

原因是您在此处获取用户的电子邮件地址:

string Email = accountService.UsernameGetEmail(UserName);

然后您尝试使用 SetString 扩展方法将其保存到会话中。该方法将 key 作为第一个参数,将 value 作为第二个参数。

稍后,您将使用“Email”的 调用 GetString 扩展方法:key

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

因此您需要将 value 设置为相同的 key


查看完整回答
反对 回复 2023-12-17
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信