我已经用Asp.Net Web API正确实现了JWT身份验证。但是,我不确定如何将其与我的MVC应用程序一起使用。让我向您解释我之前是如何做到的。用户登录后,我将用户保存在会话中。
// Add user to session
Session["User"] = MyUser;
在我看来,我确实是这样同意的:
@{
var user = (User)Session["User"];
}
<h2>Welcome</h2>
<h4>@user.FirstName @user.LastName</h4>
现在,我更改了它,一旦用户这样登录,就将JWT令牌保存在cookie中:
HttpCookie UserCookie = new HttpCookie("UserCookie");
UserCookie.Value = JWTToken;
UserCookie.Expires = DateTime.Now.AddHours(24);
我的JWT令牌有多个声明,我希望像在会话之前一样在视图中访问它们。那怎么可能?有人会建议其他方式吗?
答案 0 :(得分:0)
您可以像这样在控制器中访问它们
var claimsPrincipal= (ClaimsPrincipal)Thread.CurrentPrincipal;
// Get the claims values
string value = claimsPrincipal.Claims.Where(c => c.Type == "your key").Select(c => c.Value).SingleOrDefault();
然后将其传递给您的视图
别忘了更新您的using
using System.Security.Claims;
using System.Threading;