美文网首页ABP
Abp.Core中扩展和使用AbpSession

Abp.Core中扩展和使用AbpSession

作者: 悦_547b | 来源:发表于2019-02-14 10:04 被阅读0次

    Abp.Core中扩展和使用AbpSession的方法

              在自己的项目中,使用了Abp框架,但却没有采用原生的EF,自己把数据访问层改成了Npoco,这个组件应该是介于dapper和EF之间,可以用较少的sql,所以延续前期的代码,这样使用。

               需要在abp框架中使用扩展AbpSession,参考 圣杰 文章          https://www.jianshu.com/p/930c10287e2a

    但是在实例中,发现一个问题,因为没有使用zero,是自己实现的登录,因为对原理不太懂,一直没有搞清楚应该如何把登录信息写入。仔细读了上面的参考文件中的

    Identity身份认证的文章,原理是明白了,但自己的代码却一直找不到实例。

    关键的两个点,是一登录之后写入身份信息,按如下的方式定就可以,因为有许多的方法在core中是不一样的:

    ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal();

                ClaimsIdentity id = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);

                id.AddClaim(new Claim(ClaimTypes.NameIdentifier, "12234", ClaimValueTypes.String));

                id.AddClaim(new Claim(ICTAbpClaimTypes.Name, staff.Name));

                id.AddClaim(new Claim(AbpClaimTypes.Role, "vvv"));

                claimsPrincipal.AddIdentity(id);

                HttpContext.User = claimsPrincipal;

                HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,

                    claimsPrincipal,

                  new AuthenticationProperties { IsPersistent = true }

                          );

    这样在方法之后,就可以取到想要的内容了。

    但在后面,又发现一个问题,换一个action,取到的值还是空的,应该是ClaimsPrincipal 在不同的HttpContext是不一样的,感觉应该是在启动配置项中写的配置问题,却找不到正确的答案。最后重新建立一个新项目,测试发现,是在Startup文件中增加配置才行:

    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)

                  .AddCookie(options =>

                  {

                      options.LoginPath = new PathString("/Staff/Login");

                  });

    还有

    app.UseAuthentication();

    这样就OK了。

    相关文章

      网友评论

        本文标题:Abp.Core中扩展和使用AbpSession

        本文链接:https://www.haomeiwen.com/subject/pduseqtx.html