首页 文章

如何使用在单独的Web API项目中生成的令牌在MVC项目上启动“会话”?

提问于
浏览
0

我在一个解决方案中有两个独立的项目 . 一个是Web Api,另一个是MVC . Web Api项目没有界面 . 它具有Owin令牌生成机制 . MVC项目具有用户界面和控制器的视图,用于发出Http请求和接收响应 .

在MVC项目中,我基本上使用HttpClient将用户名和密码发送到Web Api项目的/ token endpoints . 然后Web Api项目检查凭据是否与数据库匹配 . 如果它们是,它生成并返回访问令牌,令牌类型,到期日期,刷新令牌和用户名值到MVC项目 .

我的问题是,我如何使用Web Api项目返回到MVC项目的令牌和其他信息来启动某种“会话”?通过会话我的意思是,我想在MVC项目上创建一个指示用户登录的指示器 . 该指示器也应该可以在视图层访问(以显示登录的用户名等) . 我还应该如何将令牌和用户名存储在MVC项目中,并能够将它们发布到Api项目的请求中以访问需要授权的 endpoints ?

附:我更喜欢使用HttpClient来处理请求和响应,而不是使用ajax或任何JS框架 .

提前致谢 .

1 回答

  • 0

    在MVC项目中创建如下的模态:

    class SessionValues
    {
        public string AccessToken { get; set; }
        public string RefreshToken { get; set; }
        public string UserName { get; set; }
        public DateTime ExpiryDate { get; set; }
    }
    

    并在此模态对象中隐藏令牌API响应并将此对象存储在Session变量中

    SessionValues tokenData=convert response from token endpoint to this entity
    Session["TokenData"]=tokenData;
    

    现在,每当您进行API调用时,请使用存储在会话["TokenData"]中的令牌值进行授权 . 此外,您可以添加对此 ExpiryDate 属性的检查以检查令牌是否已过期,如果需要,您可以再次获取新令牌 .

相关问题