首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么User(在User.Identity.Name中)在我的抽象基本控制器中为null?

在您的抽象基本控制器中,User(在User.Identity.Name中)为null,可能是因为用户尚未登录或者会话已过期。以下是一些建议来解决这个问题:

  1. 确保用户已登录:在访问需要登录的页面之前,请确保用户已经登录。您可以使用ASP.NET Core的Identity库来实现用户身份验证和授权。
  2. 检查会话状态:请确保您的应用程序已启用会话并设置了适当的过期时间。您可以在Startup.cs文件中配置会话选项。
代码语言:csharp
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddSession(options =>
    {
        options.IdleTimeout = TimeSpan.FromMinutes(30); //设置会话过期时间为30分钟
        options.Cookie.HttpOnly = true;
        options.Cookie.IsEssential = true;
    });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseSession();
}
  1. 使用ClaimsPrincipal:如果您使用的是.NET Core 3.0及更高版本,建议使用ClaimsPrincipal代替HttpContext.User。您可以在控制器中注入ClaimsPrincipal并获取用户名称。
代码语言:csharp
复制
public class MyController : Controller
{
    private readonly ClaimsPrincipal _user;

    public MyController(ClaimsPrincipal user)
    {
        _user = user;
    }

    public IActionResult Index()
    {
        var username = _user.Identity.Name;
        return View();
    }
}
  1. 检查身份验证和授权:确保您已正确配置身份验证和授权。您可以使用ASP.NET Core的授权策略来限制对特定页面或操作的访问。
  2. 使用腾讯云的云服务:腾讯云提供了多种云服务,例如腾讯云移动应用安全(Cloud Security)、腾讯云应用安全(Application Security)和腾讯云用户身份验证(Cloud User Authentication),可以帮助您实现用户身份验证和授权。

请注意,我不能提及其他云计算品牌商,因为我只能回答与腾讯云相关的问题。如果您需要了解其他云计算品牌商的信息,请咨询相应的专家或查阅相关文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

asp.net core 认证及简单集群

至于理由,想应该是微软觉得Authentication并非业务紧密相关,放在管道中间件更合适。那么,话说回来,.net core,我们应该怎么实现认证呢?...Demo要求也是这个,只要是经过基本认证用户即可,那为什么Demo没有使用呢?因为这里是个坑!...实际实践发现,采用注释做法,无论如何,调用总是返回401,迫不得已,download认证及授权源码,发现该处逻辑是这样: var user = context.User;...Identity == null || string.IsNullOrWhiteSpace(user.Identity.Name); if (!...因为,如果按注释方法配置,需要在每个希望认证控制器或方法上都用Authorize标记,甚至还需要在特性上配置角色或策略,而这里预设是全局认证,所以,直接以全局过滤器形式添加到了MVC处理管道

1.1K10

Membership三步曲之入门篇 - Membership基础示例

Membership类成员介绍   一般来讲我们网站要实现与用户相关基本功能包括:注册,登录,修改用户资料和密码。Membership我们提供了以下几个类来帮助我们完成这些功能。   ...2.1 新建一个基本MVC站点   我们站点默认已经启用Forms认证,如果不了解Foms的话,园子里面有一篇比较好文章,已经加上链接了。...User.Identity.IsAuthenticated 将设置True // User.Identity.Name 会设置成我们下面的UserName FormsAuthentication.SetAuthCookie...注:这个数据库是Membership帮我们生成之前并没有创建它,也就是我们只需要写好连接字符串就可以了。   而我们用户信息就保存在Users表和Memberships表。...我们创建这个MVC站点时候,VS也我们配置了权限模块。

91760

七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

注意:ViewShared 共享文件夹是每个控制器都可用文件夹,不是某个特定控制器所属。 3. 分部View 显示数据 打开Footer.cshtml,输入以下HTML 代码。...,许多人会认为已经看到加粗字符串,是Razor Html显示内容之前将内容编码,这就是为什么使用纯内容来代替粗体。...Action 过滤器使得action方法添加一些预处理和后处理逻辑判断问题。整个实验,会注重ActionFilters预处理支持和后处理功能。 1.... Index View绑定布局页面 打开Index.cshtml,文件顶部会发现以下代码: 1: @{ 2: Layout = null; 3: }<!...不需要,可在Action 过滤器帮助下删除重复代码。 是否强制定义了所有子ViewSection? 是的,如果Section定义需要section,默认值会设置true。

4.9K80

ASP.NET Core 6框架揭秘实例演示:基于角色授权

《使用最简洁代码实现登录、认证和注销》,我们提供了一个用来演示登录、认证和注销程序,现在我们在此基础上添加基于“角色授权部分”。...为了认证时候一并将用户拥有的角色提取出来,我们按照如下方式IAccountService接口Validate方法添加了表示角色列表输出参数。...我们另一个IPageRenderer服务接口中添加了如下这个RenderAccessDeniedPage方法,并在PageRenderer类型完成了对应实现。...另一种推荐做法是应用启动过程创建一系列通过AuthorizationPolicy对象表示授权规则,并指定一个唯一名称对它们进行全局注册,那么后续就可以针对注册策略名称进行授权检验。...针对“Admin”角色授权要求直接利用标注该方法上AuthorizeAttribute特性来指定,该特性就是AuthorizationMiddleware中间件提供授权规则元数据。

27730

ssh工作原理

如果通过get方法加载,则返回是一个null;如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException...用户开发Action和业务逻辑组件同时,还需要编写相关配置文件,供核心控制器FilterDispatcher来使用。...为什么用: {AOP 让开发人员可以创建非行为性关注点,称为横切关注点,并将它们插入到应用程序代码。...Spring AOP 模块基于 Spring 应用程序对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序。...IOC 和 AOP 控制反转模式(也称作依赖性介入)基本概念是:不创建对象,但是描述创建它们方式。代码不直接与对象和服务连接,但在配置文件描述哪一个组件需要哪一项服务。

94330

【asp.net core 系列】15 自定义Identity

这是从构造函数以及相关文档获取到。 关于ClaimTypes里只贴了两个,原因是这两个值Claim是两个必不可少值。根据属性名就能看出来,一个是设置用户名称,一个是设置用户角色。...读取Identity信息 第一小节简单介绍了一下如何利用Claim和ClaimsIdentity以及ClaimsPrincipal这三个类来存储用户信息以及我们想要数据。...控制器内部时,Controller类我们提供了一个属性: public ClaimsPrincipal User { get; } 通过这个属性可以反向获取到我们保存Principal实例。...与IsInRole判断依据类似,这个属性会获取Identity存放Claim集合第一个RoleTypeClaimType.NameClaim,然后取值。...所以,实现登录时候,如果想要能够通过: User.Identity.Name 获取一个用户名信息或者其他名称信息的话,则需要设置一个Type等于: public const string DefaultNameClaimType

82720

定义一个方法,功能是找出一个数组第一个只重复出现2次元素,没有则返回null。例如:数组元素 ,重复两次元素4和2,但是元素4排2前面,则结果返回

本篇博客,我们将探讨如何实现一个方法,该方法能够在给定整数数组,找出第一个仅重复出现两次元素。如果数组不存在这样元素,则方法将返回null。...定义一个方法,功能是找出一个数组第一个只重复出现2次元素,没有则返回null。...例如:数组元素 [1,3,4,2,6,3,4,2,3],重复两次元素4和2,但是元素4排2前面,则结果返回4。...如果已存在,我们将该元素计数加1;否则,我们将该元素添加到m,并将计数设置1。 循环完成后,我们得到一个映射表m,其中包含了每个元素及其在数组中出现次数。...这个方法实现充分利用了LinkedHashMap特性来保持元素插入顺序,从而使我们能够找到符合条件第一个元素。如果数组不存在符合条件元素,value将保持0,表示未找到。

18010

不用 Spring Security 可否?试试这个小而美的安全框架

抽象了一个自己Session 来管理主体与应用之间交互数据;这样的话,比如我们 Web 环境用,刚开始是一台Web服务器;接着又上了台EJB 服务器;这时又想把两台服务器会话数据放到一个地方...Cache 进行缓存,以提高性能; CacheManager 缓存控制器,来管理如用户、角色、权限等缓存;因为这些数据基本上很少去改变,放到缓存后可以提高访问性能 Cryptography 密码模块...基本配置 ? ? 你就让看这?...我们也可以用这个过滤器做默认登录逻辑,但是一般都是我们自己控制器写登录逻辑,自己写的话出错返回信息都可以定制嘛。...,我们需要关注 SessionManager 和 SessionDAO 模块,Shiro starter 已经提供了基本 Session配置信息,我们按需YAML配置就好(官网https://shiro.apache.org

49930

三歪手把手教你干掉if else

但达到一定代码量时候,多想想一下,换一个人去维护,人家能不能看懂,有没有更加好方式,这往往就需要「抽象能力。 这也是为什么这么多人推崇设计模式原因。 不多BB,来吧。...现在责任链执行器和责任链所涉及上下文都已经有了,这意味着我们已经有了责任链最主要抽象了。...{ // 不同code 对应不同责任链 private Map templateConfig = null;...ProcessController执行链通用流程控制器上会有一个Map去存储多个责任链模板,这样做好处就是:ProcessController这个流程控制器可以根据code支持多个责任链执行。...上面的逻辑,实际上就是一套通用责任链代码,最核心其实就是四个角色:「业务抽象接口」、「执行过程上下文」、「将业务实现类串起来」和「一个通用控制器执行责任链」 ?

71110

Java Spring 应用中使用 ASP.NET Core Identity 数据库进行用户认证

实际项目中需要进一步选择更加安全加密存储; 创建测试用户 使用 Identity 创建用户 admin 示例代码如下: var user = await userManager.FindByNameAsync...(user); await userManager.ResetPasswordAsync(user, token, "1a2b3c$D"); } 用户登录 用户登录示例代码: [HttpPost...User.Identity.Name : "anonymous"; } 对于熟悉 .NET 开发者来说, 这些都是常规操作, 具体示例项目代码可以参考这里 https://github.com...自定义安全配置使用 Identity 数据库 application.yml 添加数据源信息, 和上文 .NET 应用数据库信息保持一致: spring: datasource:...:1.7.1' application.yml 添加数据源信息, 和上文 .NET 应用数据库信息保持一致: spring: datasource: url: jdbc:postgresql

1.2K30

OpenDaylight铍版本初体验——坑还多吗

下面是使用时遇到坑和喜欢地方,小伙伴们使用时也可以注意下!...铍版本上,仍然重视与OpenStack集成与对接,但是这一方面还没有使用,感兴趣小伙伴可以验证看看。 另外Be版本增加了很多新应用程序,这将对SDN发展过渡变得更加便捷、快速: ?...在这种OpenDaylight实例中分离SDN控制器客户端承载各种SDN应用和单独SDN控制器服务器抽象和协作实际物理网络访问。...其中北向接口(NBI),位于控制器和应用程序/服务之间,主要目的是启用应用创新和,通过抽象网络功能/信息和开放抽象/逻辑网络到应用来优化SDN生态系统。...OF-CONFIG:实现了OF-CONFIG协议,启用OpenFlow逻辑交换机基本构件配置,OpenFlow控制器能够通过OpenFlow协议对OpenFlow逻辑交换机进行通信和控制。

1.6K80

程序设计中使用Interface

PHP和Java中都有Interface概念,刚接触开发时大家都知道面向对象Interface负责定义一些抽象方法来抽象和界定类对象行为,更有一个“鸭式辩型”理论大概意思就是使用者并不关心对象内部是怎么实现只要你会...这篇文章里就结合着Laravel框架来说一下为什么要使用Interface以及通过Interface给程序长期维护、团队协作和测试带来收益。...为什么使用契约 通过上面几个契约源码文件我们可以看到,Laravel提供契约是核心模块定义一组interface。...自定义用户认证方法介绍用户认证章节我们介绍过,读者可以去翻阅那块文章。...接口与团队开发 当你团队开发大型应用时,不同部分有着不同开发速度。比如一个开发人员开发数据层,另一个开发人员在做控制器层。写控制器开发者想测试他控制器,不过数据层开发较慢没法同步测试。

1.1K10
领券