美文网首页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

    Abp.Core中扩展和使用AbpSession的方法 在自己的项目中,使用了Abp框架,但却没有采用原...

  • 扩展AbpSession

    通过扩展方法的思路来进行扩展IAbpSession 属性具体代码如下:

  • ABP入门系列(10)——扩展AbpSession

    ABP入门系列目录——学习Abp框架之实操演练源码路径:Github-LearningMpaAbp 一、AbpSe...

  • 浅谈Kotlin语法篇之扩展函数(五)

    1、为什么要使用Kotlin中的扩展函数? 2、怎么去使用扩展函数和扩展属性? 3、什么是扩展函数和属性? 4、扩...

  • 4.会话属性 AbpSession

    一、概述 AbpSession提供获取用户ID,租户ID,身份类型的一些信息。AbpSession不是Sessio...

  • october中的twig模板

    october中使用twig模板语言扩展为多个函数,标签,过滤器和变量。这些扩展允许您使用CMS功能并访问模板中的...

  • 第六章.使用集合类

    Groovy不仅将Java中的String进行扩展,还对集合(list和map)进行了扩展或者说是简化。 一、使用...

  • Swift--扩展

    扩展的概念 扩展计算属性 扩展方法 扩展构造函数 扩展下标 扩展的概念 在Swift中可以使用一种扩展机制,在原有...

  • kotlin语言学习10 ——kotlin 可见性与扩展

    本节主要介绍kotlin的可见性与kotlin中的扩展功能的使用,包括:扩展类、扩展方法、扩展伴生对象、扩展属性等...

  • 对swift中的扩展进行"分组"

    在swift中对类和struct进行扩展或使用协议扩展(本质是mixin),是非常简单且实用的语法。但是语法糖太好...

网友评论

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

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