gpt4 book ai didi

c# - 添加自定义声明类型

转载 作者:IT王子 更新时间:2023-10-29 04:17:02 26 4
gpt4 key购买 nike

OWIN 身份验证的新手,发现很难创建我自己的 owin 声明类型。

事情是这样的。我需要添加自定义声明,如“GroupID”,以便我可以在不同的页面上轻松访问它。

我在登录时做了类似的事情

public ActionResult Login(LoginViewModel model, string returnUrl)
{
UserViewModel userModel = new UserViewModel();
if (!ModelState.IsValid)
{
return View(model);
}

if(CommonHelper.ValidateADUser(model.Username,model.Password))
{

UserViewModel curUser = userModel.GetUserDetails(model.Username);
if (curUser != null)
{
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.WindowsAccountName, curUser.Username));
claims.Add(new Claim(ClaimTypes.Name,curUser.Fullname));
claims.Add(new Claim(ClaimTypes.Role, ""));
claims.Add(new Claim("GroupID", curUser.UserGroupID.ToString()));

var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var ctx = Request.GetOwinContext();
AuthenticationManager.SignIn(id);
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Invalid login attempt.");
}

return View(model);
}

在我的登录部分中,我试图通过这样做来获取值

public ActionResult _LoginPartial()
{
var identity = (ClaimsIdentity)User.Identity;
TempData["curUserFullName"] = identity.FindFirst(ClaimTypes.Name).Value;

string s= identity.FindFirst("GroupID").Value;
return PartialView();
}

我可以毫无问题地获取用户名和全名,但组 ID 会导致对象空错误。

希望有人能帮我找到正确答案。

最佳答案

我已经检查过你的代码,没有问题。

这是我希望你做的:

Check if the cache was clear. If your cache was not cleared you can clear it like this: CTRL+SHIFT+DELETE

因为你登录的时候,会保存在cookies里,不清楚,刚好新的claim没有保存在cookies里。

或者尝试检查您的 UserGroupID 是否有值。

关于c# - 添加自定义声明类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33074914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com