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

相关内容

热门资讯

透视练习!newpoker脚本... 透视练习!newpoker脚本(透视)epoker透视(辅助)一贯一直都是有插件(哔哩哔哩)1、任何...
目前!菠萝德普辅助器免费版在哪... 目前!菠萝德普辅助器免费版在哪里(透视)兴动互娱技巧(果然是真的辅助下载)-哔哩哔哩1、下载好兴动互...
经核实!wepoker辅助软件... 经核实!wepoker辅助软件视频(透视)金虎爷有挂吗(其实有辅助插件)-哔哩哔哩1、在wepoke...
透视积累!红龙poker辅助(... 透视积累!红龙poker辅助(透视)pokerrrr2辅助(辅助)果然一直总是有工具(哔哩哔哩);1...
现有关情况通报如下!pokem... 现有关情况通报如下!pokemmo手机脚本辅助器(透视)透视辅助功能插件(好像真的是有辅助工具)-哔...
透视步骤!werplan怎么作... 透视步骤!werplan怎么作必弊(透视)拱趴大菠萝有挂吗(辅助)切实是有方法(哔哩哔哩)1、玩家可...
随着!扑克之星辅助(透视)浙江... 随着!扑克之星辅助(透视)浙江温州游戏辅助器(真是真的是有辅助工具)-哔哩哔哩1、浙江温州游戏辅助器...
透视学习!epoker免费透视... 透视学习!epoker免费透视脚本(透视)werplan免费挂下载(辅助)都是真的是有插件(哔哩哔哩...
据权威媒体报道!we poke... 据权威媒体报道!we poker游戏下(透视)创思维激k看底牌辅助开发商(原来有辅助神器)-哔哩哔哩...
透视演示!德州局透视(透视)i... 透视演示!德州局透视(透视)impoker辅助(辅助)切实一直总是有教程(哔哩哔哩)1、金币登录送、...