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

即使在asp.net核心2.2中使用PasswordSignInAsync成功登录后,User.Identity.IsAuthenticated也始终返回false

在ASP.NET Core 2.2中,即使使用PasswordSignInAsync成功登录后,User.Identity.IsAuthenticated始终返回false的可能原因有以下几点:

  1. 配置问题:请确保在Startup.cs文件的ConfigureServices方法中正确配置了身份验证服务。确保已添加AddAuthentication和AddCookie方法,并指定正确的Cookie名称和登录路径。例如:
代码语言:txt
复制
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.Cookie.Name = "YourCookieName";
        options.LoginPath = "/Account/Login";
    });
  1. 认证中间件顺序问题:在Configure方法中,确保将app.UseAuthentication()和app.UseAuthorization()方法放在app.UseRouting()之后,如下所示:
代码语言:txt
复制
app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

// ...
  1. 登录成功后的重定向问题:在登录成功后,确保将用户重定向到正确的页面,并且在重定向的Action方法中不要忘记调用SignInAsync方法。例如:
代码语言:txt
复制
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model)
{
    if (ModelState.IsValid)
    {
        var result = await _signInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, lockoutOnFailure: false);
        if (result.Succeeded)
        {
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError(string.Empty, "Invalid login attempt.");
        }
    }
    return View(model);
}
  1. 用户认证信息未正确存储:在登录成功后,确保已正确设置用户的认证信息。例如,在上述示例中,可以在登录成功后调用SignInAsync方法来设置用户的认证信息:
代码语言:txt
复制
await _signInManager.SignInAsync(user, isPersistent: false);

如果上述解决方案都没有解决问题,可能需要进一步检查ASP.NET Core 2.2的版本兼容性、依赖项和代码逻辑等方面的问题。

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

相关·内容

C#进阶-ASP.NET常用控件总结

~/Welcome.aspx"); } }}protected void Login1_LoggedIn(object sender, EventArgs e){ // 用户成功登录的处理逻辑...}这是一个使用ASP.NET Login控件实现用户登录功能的示例。...Login控件提供了简单的用户认证功能,用户可以输入用户名和密码登录系统,登录成功将重定向到指定的欢迎页面。...另外,Login1_LoggedIn事件处理程序用于处理用户登录成功的逻辑,您可以在这里执行一些必要的操作,如记录日志、设置用户会话等。2....在后台代码中,您可以通过事件来处理角色管理过程中的逻辑,如在添加角色之前执行某些操作(RoleManager1_RoleAdding事件)、角色添加成功执行某些操作(RoleManager1_RoleAdded

8310

asp.net core 系列之用户认证(authentication)

ASP.NET Core 的 identity 是一种需要用户登录的会员系统,用户可以创建一个登录信息存储 Identity 的的账号, 或者可以使用第三方登录,支持的第三方登录包括:Facebook...Identity 使用Sql Server 存储用户的姓名,密码等数据,当然你可以选择其他的存储工具进行存储 这篇教程,将会讲解如何使用Identity进行用户的注册,登录,登出 1.创建一个带认证(...,登录功能 解决方案的项目上,右键添加->新搭建基架的项目 选择标识,添加 然后选择你想添加的项 ?...} } // If we got this far, something failed, redisplay form return Page(); } 创建成功...if (result.Succeeded)  //登录成功 { _logger.LogInformation("User logged in.");

1.9K10

Blazor.Server以正确的方式 丶集成Ids4

注册好了服务,那肯定是要开启中间件了: 开启中间件 app.UseAuthentication(); 第二部分:登录、登出的页面设计 这里我们使用到了Razor的Page功能,添加登录和登出功能,具体的使用方法可以微软官网查看...你可能会好奇,那既然要使用到认证中心了,为啥还需要登录登出呢,其实客户端都是需要的,不信你用mvc项目,需要配置的。...很简单,主页面_Host.cshtml中,使用User属性来实现: @model _HostAuthModel @if (User.Identity.IsAuthenticated) {...,这个sid就像是session一样,每次登录成功回调,都会有一个唯一的字符串,作为标识,开发过微信的应该都知道。...,并成功跳转认证中心; 登录成功回调到首页,并获取用户信息; 实现单点登录; 编辑的时候,test用户返回Forbidden,表明已经登录,并实现了权限控制; 好啦,自己动手试试吧。

1.5K10

FluorineFx:认证与授权

,其实返回true或false都无所谓,重点不在这里 return true; } //同样,这里方法的名字其实可以随便起 public...”前,如果直接点击“远程调用”,应该会调用失败(因此此时尚未登录认证) 如果先点击“登录,再点击“远程调用”,因为这时已经登录认证过了,所以应该成功 完整flash代码: package { import...如果点击“登录,再点击"远程调用",这回成功了,说明认证起作用了。...最后再啰嗦一下:前面提到了FluorineFx的认证票据跟asp.net一样,是保存在Cookie的,所以如果您把swf嵌入到网页上,flash中点击登录,如果在其它aspx页面上用 <% if...即:如果在asp.net登录了,认证和授权信息flash里能识别,通常情况下,这已经能满足绝大多数需要了。

90180

ASP.NET Core 基础知识】--身份验证和授权--使用Identity进行身份验证

以下是ASP.NET Core Identity的主要组成部分: User Manager(用户管理器):User Manager是一个用于管理用户的核心组件。...1.2 Identity的创建和管理 ASP.NET Core中,创建和管理Identity通常包括以下步骤: 创建ASP.NET Core 项目 首先,你需要创建一个ASP.NET Core项目。...var result = await signInManager.PasswordSignInAsync("username", "password", false, false); if (result.Succeeded...) { // 登录成功 } 分配角色 var user = await userManager.FindByNameAsync("username"); await userManager.AddToRoleAsync...社交登录集成: Identity 支持与外部身份提供者(如Google、Facebook、Microsoft等)集成,使用户能够使用他们的社交媒体账户进行登录

9000

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

集成Membership到ASP.NET MVC网站中   这里我们的需求很简单,只是要实现一个包含注册、登录、以及修改密码功能的网站就可以了。...首先我们Layout里面加上三个链接:Register, Login, 如果已经登录的话我们就显示用户名和LogOff。    ...获取用户 MembershipUser.ChangePassword 修改密码   还有更多的方法我们可以使用最上面的表中我们已经列出来了,大家可以自行尝试。...其实ASP.NET已经有一套比较成熟的权限体系,加上它的自定义功能基本可以满足我们大多数的需求了。   我们创建这个MVC站点的时候,VS为我们配置了权限模块。...接下来我们就可以代码中使用User.IsInRole方法是看用户是否具有某一个角色的权限了。

90460

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

Java Spring 应用中使用 ASP.NET Core Identity 的数据库进行用户认证 使用 NHibernate 创建 Asp.Net Core 应用 ASP.NET Core Identity...NHibernate 是 .NET 平台上老牌的对象关系映射 (ORM) 类库, 成熟度很高, 实现了 ASP.NET Core Identity 的认证支持。 ?...Net Identity 创建用户/管理, Spring 应用使用用户名/密码进行登录), 创建了一个自定义的 PasswordHasher 作为示例, 将密码用 SHA-256 进行散列存储, 仅作为参考...接下来就是本文的重点, Spring 应用中使用 ASP.NET Identity 的数据库用户。...使用 Shiro 进行登录的代码为: @PostMapping("/login") public String login( @RequestBody LoginInfo info ) {

1.2K30

Microsoft.AspNet.Identity 自定义使用现有的表—登录实现

但是使用此框架的时候存在一些问题,如果是全新的项目还可以使用它默认提供的表名,字段名等。但是如果是一些老的数据库上应用这个框架就比较麻烦了。...所以我们实现一个自己的Microsoft.AspNet.Identity.EntityFramework 首先我们只说登录登录的入口代码是 var result = await SignInManager.PasswordSignInAsync...需要实现非常简单,根据Owin的源代码实现对应的接口即可. 1.FindByNameAsync 先根据登录名找到user对象,使用UserManager中的UserStroe所实现IUserStore...检查密码,使用UserManager中的UserStroe所实现的IUserPasswordStore接口方法 4.ResetAccessFailedCountAsync 登录成功,重置登录失败计数,...我这里使用的是EF作为数据提供源,当然你可以使用自己的,只需要替换FindByIdAsync,FindByNameAsync方法中对应的实现,哪怕是在这些方面里面使用ado.net直接查询数据都是完全没有问题的

1.7K20

Asp.Net 用户验证(自定义IPrincipal和IIdentity)

我们是基于.Net Framework这个平台进行编程,所以我觉得,很多情况下,使用Framework已经建立好的机制会显著地提高工作效率,而且.NET Framework内置的验证机制通常更加安全...回想一下我刚接触.Net时,曾经完全绕过.NET的验证,自己编码采用Cookie+Session实现身份验证,并且一个Asp.Net 登录控件都没有使用,那时候的理由是:我要使用自定义的用户表,不能使用...其实这只是一个误解罢了,以为使用Asp.Net的验证机制和登录控件就一定要使用其附带的数据表,以为Identity就只能携带一个Name属性。...“搜索”按钮的事件处理方法反而非常简单,如果登录失败时页面显示失败原因,如果登录成功则调用SetUserDataAndRedirect()方法。...Default.aspx 页面预览 默认情况下SignIn.aspx登录成功后会导航到Default.aspx页面,所以我们先简单的构建一下Default.aspx页面,看看实现的效果: <asp:LoginView

1.7K31

.net中的认证(authentication)与授权(authorization)

,好比windows系统,没登录就无法使用(不管你是用Administrator或Guest用户,总之要先正确登录,才能进入系统)....,只有登录成功能进一步确认身份。...用Membership/Role做过asp.net开发的朋友们,看到这二个接口的定义,应该会觉得很眼熟,想想我们Asp.Net页面中是如何判断用户是否登录以及角色的?...这二个接口同样能用在Winform程序中,下面将创建一个WinForm应用,里面有二个窗口:Form1以及Form2,可以把Form1当成登录界面,而Form2则是程序主窗口,很多管理软件中,主窗口都要求登录以后才能访问...,我们就来模拟一下: Form1的界面: Form2更简单:(就一个只读的TextBox) 我想做的事情:Form1上登录,看看在Form2中,能否判断出用户已经登录,以及识别出身份。

1.6K100

利用自定义的AuthenticationFilter实现Basic认证

ASP.NET MVC的应用编程接口中,我们找不到IAuthenticationFilter接口的实现者。...正式介绍如果定义这个实现Basic认证的AuthenticationFilter之前,我们不妨先来看看使用了这个自定义AuthenticationFilter会产生怎样的效果。...我们一个ASP.NET MVC应用中定义了如下一个HomeController,定义其中的默认Action方法Index会输出以三种形式体现的“当前用户名”。...: {0}", Thread.CurrentPrincipal.Identity.Name)); 9: } 10: } 由于浏览器默认提供对Basic认证的支持,所以当我们运行该程序如下图所示的登录对话框会自动弹出...,当我们输入正确的用户名和密码(用户名和密码直接维护AuthenticateAttribute上),当前登录用户名会呈现在浏览器上。

1.1K110

MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

如果用户成功登录的话,认证服务(假如是QQ) 会返回给我们一个令牌。 令牌当中包含了服务调用者所需要的信息,用户名,以及角色信息等等。   ...QQ的登录页面 用户QQ登录页面上输入用户名和密码,QQ会到自己的数据库中查询,一旦登录成功,会返回一个跳转到我们站点的响应(302指向我们的网站页面) 用户被跳转到我们网站的一个检测登录的页面,我们可以拿到用户的身份信息...到这里,我想算是把登录代码的第二句话讲完了,讲清楚了,那么我们来看看第三句话,也就是最后一句,其实它才是登录核心,第二句只是创建了一个ClaimsIdentity的对象。...即使现在,web.config添加自己定义的http module 不是一件能让人开心的事情,反正我一想到那个很长的类名以及程序集名就够蛋疼的。   ...= false ASP.NET 管道 的Authroize 授权阶段,将用户跳转到登录页面 用户输入用户名和密码点击提交 我们检查用户名和密码,如果正确,就调用FormsAuthentication.SetAuthCookie

2.6K50

Asp.Net Forms认证移动平台中遇到的一个问题以及调查过程

我们项目的网站的移动版是基于Asp.Net平台开发的,用户登录也是基于Asp.Net的Forms认证,整个开发和测试过程中没有发现任何客户登录异常,但是发布断断续续有用户反映在登录页面登录成功跳转主页...认证的cookie是登录画面设置的,登录画面的请求是通过HTTPS协议的,而首页的请求是通过HTTP协议的,通过查看Fiddler,用户登录登录页面成功设置了认证cookie,并且首页请求时把认证...至此可以判断,问题不是客户端,而是服务器端,那么为什么服务器端不能识别返回的认证信息呢?为什么有些从某些设备上登录就失败呢?...深入理解cookielessASP.NET Form认证中的应用 要确认服务器端为什么没有成功认证,那么必须要理解ASP.Net中的cookieless功能。...再次回到本篇文章所调查的bug中来,有些用户不能正常登录就是因为这些用户所使用的设备被ASP.NET识别为不能支持cookie所致的,尽管设备本身是支持cookie的,比如我自己的手持设备MOTO Droid

1K70

完美解决asp.net core 3.1 两个AuthenticationScheme(cookie,jwt)共存在一个项目中

内容 我的项目中有mvc controller(view 和 razor Page)同时也有webapi,那么就需要网站同时支持2种认证方式,web页面的需要传统的cookie认证,webapi则需要使用...解决方案 实现web通过login页面登录,webapi 使用jwt方式获取认证,支持refreshtoken更新过期token,本质上背后都使用cookie认证的方式,所以这样的结果是直接导致token...Account/AccessDenied"; }); 下面userscontroller 认证方式 重点:我简化了refreshtoken的实现方式,原本规范的做法是通过第一次登录返回一个...//Return Ok with token string as content _logger.LogInformation($"{model.UserName}:JWT登录成功...测试的时候都可以不用加token可以访问

1K20

asp.net core 3.x 身份验证-1涉及到的概念

前言 从本篇开始将围绕asp.net core身份验证写个小系列,希望你看完本系列,脑子里对asp.net core的身份验证原理有个大致印象。 至于身份验证是啥?与授权有啥联系?...(OAuth2) - 比如集成微信、支付宝登录 为了便于理解后续的概念,下面先以最简单常见的 【用户密码+cookie】 的身份验证方式说说核心流程 登录: 用户输入账号密码提交 服务端验证账号密码 若验证成功...,请求会继续执行,此时以匿名用户的身份访问系统 用户标识ClaimsPrincipal 它用来表示当前登录的用户,它包含用户Id + 一些与权限检查相关的附件属性(角色、所属部门)。...当请求抵达时“身份验证中间件”将从请求中解析得到当前用户,如果获取成功则赋值给HttpContext.User属性 所以对于我们来说通常有两个场景使用它 在任意能访问HttpContext的地方获取当前用户...: 登录时验证通过后将用户标识加密存储到cookie,SignIn 当用户注销时,需要清楚代表用户标识的cookie,SignOut 登录时从请求中获取用户标识,Authenticate 在用户未登录访问受保护的资源时

2.4K30

asp.net core 3.x 授权默认流程

由于asp.net core 3.x目前使用终结点路由,因此授权框架可以用于所有asp.net web项目类型,比如:webapi mvc razorpages...。...AuthorizationHandlerContext(上面说了授权完成的结果存储在里面)。...")]//使用全局授权策略中的"p1"进行授权判断 [Authorize(AuthenticationSchemes = "google")]//只允许使用google身份验证登录的用户访问...4.2.2、AuthorizeAsync 调用IAuthorizationService进行权限判断,若成功返回成功。...core 3.x目前的权限设计棒棒哒,默认的处理方式已经能满足大部分需求,即使有特殊需求扩展起来非常简单,前面注册部分看到注册了各种服务,且都有默认实现,这些服务授权检查的不同阶段被使用,如果有必要我们可以自定义实现某些接口来实现扩展

1.8K20

实战解读ASP.NET Core身份认证

我们口头上常说的: 基于cookie认证方案,若认证成功,go on,若认证失败则跳转回登录页面; 基于基本身份认证(BA)方案,若认证成功,go on,若认证失败则给浏览器返回WWW-Authenticate...核心认证函数: 可落地基于声明的访问控制,生成绑定了ClaimsPrincipal、Scheme的AuthenticationTicket; 无论认证成功/失败,函数返回AuthenticateResut...挑战(对未认证的用户做出的反应): 例如返回登录页面 禁止(对已认证,但对特定资源无权访问做出的反应) :例如返回提示字符串 以上均为服务注册过程 收到请求,认证中间件使用IAuthenticationService...3.2 服务中获取当前登录用户 这个时候,服务是作为请求处理中的一个环节,并没有直接可用的HttpContext。...或者Application 服务中使用ICurrentUser接口拿到登录用户。

1.7K10
领券