首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >添加自定义声明类型

添加自定义声明类型
EN

Stack Overflow用户
提问于 2015-10-12 14:54:26
回答 1查看 34.1K关注 0票数 40

不熟悉OWIN身份验证,并且发现很难创建自己的owin声明类型。

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

我在我的登录中做了这样的事情

代码语言:javascript
复制
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);
}

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

代码语言:javascript
复制
public ActionResult _LoginPartial()
{
    var identity = (ClaimsIdentity)User.Identity;
    TempData["curUserFullName"] = identity.FindFirst(ClaimTypes.Name).Value;

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

我可以毫不费力地获取用户名和全名,但是组id会导致对象为空错误。

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

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33074914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档