ASP.netMVC.netframework4.8和ASP.netMVCCore6之间的共享用户身份无法工作。
创始人
2024-09-19 02:30:33
0

在ASP.net MVC .netframework 4.8应用程序中使用Cookie来维护用户身份,而在ASP.net MVC Core 6应用程序中使用Json Web Tokens(JWT)来实现身份验证和授权。因此,它们之间共享用户身份变得困难。但是,可以通过将JWT作为 .netframework 4.8应用程序中的Cookie存储或使用ASP.net Core Identity来实现共享用户身份。

以下是使用ASP.net Core Identity实现身份验证和授权的示例代码:

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
  services.AddIdentity()
    .AddEntityFrameworkStores()
    .AddDefaultTokenProviders();

  // configure JWT token authentication
  var key = Encoding.ASCII.GetBytes(Configuration.GetValue("JwtKey"));

  services.AddAuthentication(options =>
  {
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  })
  .AddJwtBearer(options =>
  {
    options.RequireHttpsMetadata = false;
    options.SaveToken = true;
    options.TokenValidationParameters = new TokenValidationParameters
    {
      ValidateIssuerSigningKey = true,
      IssuerSigningKey = new SymmetricSecurityKey(key),
      ValidateIssuer = false,
      ValidateAudience = false
    };
  });
}

// controller
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class MyController : ControllerBase
{
  // controller actions
}

在ASP.net Core 6应用程序中生成JWT并在 .netframework 4.8 应用程序中读取和解析:

// ASP.net Core 6
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(Configuration.GetValue("JwtKey"));

var tokenDescriptor = new SecurityTokenDescriptor
{
  Subject = new ClaimsIdentity(new Claim[]
  {
    new Claim(ClaimTypes.Name, username),
    new Claim(ClaimTypes.Role, role)
  }),
  Expires = DateTime.UtcNow.AddHours(1),
  SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};

var token = tokenHandler.CreateToken(tokenDescriptor);
var encodedToken = tokenHandler.WriteToken(token);

// .netframework 4.8
var handler = new JwtSecurityTokenHandler();
var jwt = handler.ReadJwtToken(encodedToken);
var identity = new ClaimsIdentity(jwt.Claims);

使用此方法可以在ASP.net MVC .netframework 4.8和ASP.net MVC Core

相关内容

热门资讯

1分钟带你了解!陕西挖坑技巧(... 1分钟带你了解!陕西挖坑技巧(透视挂)每日必看外挂开挂辅助平台(原来有挂)>>您好:软件加薇1367...
玩家攻略推荐"都莱大... 玩家攻略推荐"都莱大菠萝辅助神器"开挂(透视)辅助插件(果然确实有挂的)-哔哩哔哩;致您一封信;亲爱...
三分钟带你了解!四川小程序辅助... 三分钟带你了解!四川小程序辅助器免费(透视挂)一分钟了解外挂开挂辅助平台(一贯有挂)【无需打开直接搜...
透视最新"开心赢三张... 透视最新"开心赢三张自建房有挂吗"开挂(透视)辅助软件(一直确实有挂的)-哔哩哔哩;1、这是跨平台的...
第8分钟带你了解!好友赣南辅助... 第8分钟带你了解!好友赣南辅助器(辅助挂)分享给玩家外挂开挂辅助下载(其实真的是有挂) 了解更多开挂...
透视计算"微信边锋辅... 透视计算"微信边锋辅助下载"开挂(透视)辅助神器(一贯是有挂的)-哔哩哔哩;1.微信边锋辅助下载 a...
第八分钟带你了解!开心十三张透... 开心十三张透视开挂教程视频分享装挂详细步骤在当今的网络游戏中,开心十三张透视作为一种经典的娱乐方式,...
分享开挂内幕"福建兄... 分享开挂内幕"福建兄弟13水修改器"开挂(透视)辅助工具(一直是真的有挂)-哔哩哔哩;超受欢迎的福建...
总算了解"小闲川南辅... 总算了解"小闲川南辅助"开挂(透视)辅助安装(原来是有挂)-哔哩哔哩;1、不需要AI权限,帮助你快速...
第8分钟带你了解!新道游房卡辅... 第8分钟带你了解!新道游房卡辅助器(透视挂)透视透视外挂开挂辅助工具(一贯是有挂的);超受欢迎的新道...