Web API没有会话 - 需要检查用户是否经过身份验证

时间:2016-11-19 09:22:40

标签: c# asp.net-web-api

我正在创建我的第一个WebAPI项目,并且遇到了我的第一个障碍。似乎因为WebAPI模型是无状态的,所以我没有可用的Session。因此,我在登录时尝试添加会话变量失败了。

public static void CreateSession(int userId, string firstName, string surname, int timezoneOffset, string timezoneName)
{
    // Create the object.
    var session = new SessionToken
    {
        FirstName = firstName,
        Surname = surname,
        TimezoneName = timezoneName,
        TimezoneOffset = timezoneOffset,
        UserID = userId
    };

    // Is there an existing session?
    var existing = HttpContext.Current.Session[SESSIONNAME];

    // If so, we need to kill it and refresh it. Not sure why we would have this case though.
    if (existing != null)
        HttpContext.Current.Session.Remove(SESSIONNAME);

    // Create the session.
    HttpContext.Current.Session.Add(SESSIONNAME, session);

}

Session为null,这是因为WebAPI使用的无状态模型。

如何使用Web API实现此目的?如何检查和查询当前用户是否有效?我的会话通常会保留一些项目,例如chaps名称,以便在布局屏幕上呈现 - 但看起来现在不可能。

1 个答案:

答案 0 :(得分:0)

推荐的方法是使用令牌进行无状态身份验证和授权。

多年以来,使用OWIN中间件配置WebAPI以集成OAuth2工作流非常容易。

了解following this tutorial

的方法

您在OAuth2中所谓的会话项目,您所说的about claims.