如何在REST WEB API中保存登录到会话的数据



我试图将登录详细信息保存到会话,但我收到错误,会话是null,我无法访问它。

public void saveToSession(UserModel userInfo) {
string id = userInfo.Id.ToString();
HttpContext context = HttpContext.Current;
context.Session["Id"] = id;
context.Session["FirstName"] = userInfo.FirstName;
context.Session["LastNAme"] = userInfo.LastName;
context.Session["Username"] = userInfo.Username;
context.Session["Email"] = userInfo.Email;
context.Session["Role"] = userInfo.Role;
}

我需要做一些其他配置吗?

REST通常要求执行操作所需的所有内容都包含在请求中,因此不会启用会话。启用它(IMHO(有点脏。

在Web API 中启用会话状态

这适用于ASP。NET Web API 5.x。如果您实际使用的是ASP。NET核心,它不会工作(请更新您的标签(。

我最近使用了这种技术作为一种临时措施,并从代码中删除了它,因为我用一个将请求与相关数据联系起来的适当输入来替换它。我建议你也这样做。

最后,我称之为"脏",因为它依赖于反射来在框架类中分配私有字段。如果实现发生更改,它可能只是无声地停止工作:要么字段消失,GetField调用返回null,随后的检查停止通过,要么字段保留但不再使用。一个可能性较小但仍然可能的更改是,字段的类型被更改为不兼容的类型,然后在启动时出现异常。

您需要进行一些启动配置

在ConfigureServices 中

services.Configure<CookiePolicyOptions>(options => {
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
})

在应用程序生成器中

app.UseSession();

最新更新