加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – OnValidateIdentity会话为空 – Mvc Owin

发布时间:2020-12-16 09:11:49 所属栏目:asp.Net 来源:网络整理
导读:目前,我在OnValidateIdentity中访问Session时遇到问题 – HttpContext.Current.Session为null.我错了什么我的申请如下: – 我有2个项目:Mvc vs WebApi – 我希望用户在我更改密码时会退出 – 改变安全标记. – 我实现为:Mvc项目将验证用户请求时更改的Sec
目前,我在OnValidateIdentity中访问Session时遇到问题 – HttpContext.Current.Session为null.我错了什么我的申请如下:
– 我有2个项目:Mvc vs WebApi
– 我希望用户在我更改密码时会退出 – >改变安全标记.
– 我实现为:Mvc项目将验证用户请求时更改的SecurityStamp.我将从其他webapi网站获得SecurityStamp.这意味着我的mvc无法通过webapi直接访问数据库.我必须在authorize标头中输入令牌以从webapi获取安全性标记.但是,我无法从会话访问令牌,当我成功登录时,我将令牌存储在会话中.代码示例:

public void ConfigureAuthentication(IAppBuilder app)
    {            
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,CookieSecure = CookieSecureOption.SameAsRequest,LoginPath = new PathString("/Home"),LogoutPath = new PathString("/Account/Logout"),ExpireTimeSpan = TimeSpan.FromMinutes(30),Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = async ctx =>
                {
                    var claim = ctx.Identity.FindFirst("SecurityStamp");
                    var accessToken = HttpContext.Current.Session["token"].ToString();

                    using (HttpClient httpClient = new HttpClient())
                    {
                        // Used accessToken variable for httpClient
                        // TODO Get security stamp from webapi . Ex :
                        string securityStampWebApi = "demo";
                        if (securityStampWebApi != claim.Value)
                        {
                            ctx.RejectIdentity();
                        }
                    }
                }
            }
        });
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
    }

建议其他实施我可以完成这个案子.

解决方法

cookie中间件在IIS管道中的身份验证阶段运行,该阶段在HttpContextor会话状态可用之前.所以你需要在没有它的情况下工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读