示例#1
0
        public async Task <ActionResult> Login(LoginModel details, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindAsync(details.Name, details.Password);

                if (user == null)
                {
                    ModelState.AddModelError("", "Invalid name or password.");
                }
                else
                {
                    ClaimsIdentity ident =
                        await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                    var roleIds = user.Roles.Select(p => p.RoleId).ToList();
                    var claims  = ClaimInfoManager.GetClaimInfos(roleIds);
                    ident.AddClaims(LocationClaimsProvider.GetClaims(claims));

                    AuthManager.SignOut();
                    AuthManager.SignIn(new AuthenticationProperties
                    {
                        IsPersistent = false
                    }, ident);
                    return(Redirect(returnUrl));
                }
            }
            ViewBag.returnUrl = returnUrl;
            return(View(details));
        }
示例#2
0
        // GET: ClaimAdmin
        //public ActionResult Index()
        //{
        //    return View();
        //}

        public ActionResult Index()
        {
            var abs  = Assembly.GetExecutingAssembly();
            var ts   = abs.GetTypes();
            var list = new List <CreateClaimInfoModel>();


            foreach (Type type in ts)
            {
                if (type.BaseType != null && type.BaseType == typeof(Controller))
                {
                    var ms = type.GetMethods();
                    foreach (MethodInfo methodInfo in ms)
                    {
                        foreach (var methodAttribute in methodInfo.CustomAttributes)
                        {
                            #region MyRegion
                            //if (methodAttribute.AttributeType == typeof(DescriperAttribute))
                            //{
                            //    var nas = methodAttribute.NamedArguments;
                            //    if (nas != null)
                            //        foreach (CustomAttributeNamedArgument namedArgument in nas)
                            //        {
                            //            Console.WriteLine("CustomAttributeNamedArgument:");
                            //            Console.WriteLine("name:" + namedArgument.MemberName + "||value:" + namedArgument.TypedValue.Value);
                            //        }
                            //}
                            //else
                            #endregion
                            if (methodAttribute.AttributeType == typeof(ClaimsAccessAttribute))
                            {
                                #region MyRegion
                                var nas = methodAttribute.NamedArguments;
                                if (nas != null)
                                {
                                    var claimIfo = new CreateClaimInfoModel();

                                    foreach (CustomAttributeNamedArgument namedArgument in nas)
                                    {
                                        //Console.WriteLine("MyAttribute:");
                                        //Console.WriteLine("name:" + namedArgument.MemberName + "||value:" + namedArgument.TypedValue.Value);

                                        if (namedArgument.MemberName.Equals("Issuer"))
                                        {
                                            claimIfo.Issuer = (string)namedArgument.TypedValue.Value;
                                        }
                                        else if (namedArgument.MemberName.Equals("ClaimType"))
                                        {
                                            claimIfo.ClaimType = (string)namedArgument.TypedValue.Value;
                                        }
                                        else if (namedArgument.MemberName.Equals("Value"))
                                        {
                                            claimIfo.Value = (string)namedArgument.TypedValue.Value;
                                        }
                                        else if (namedArgument.MemberName.Equals("MethodTypeValue"))
                                        {
                                            claimIfo.MethodTypeValue = (MethodType)namedArgument.TypedValue.Value;
                                        }
                                    }

                                    list.Add(claimIfo);
                                }
                                #endregion
                            }
                        }
                    }
                }
            }
            //todo 存在问题:只能在第一次初始插入claim
            if (ClaimInfoManager.GetClaimInfos().Count == 0)
            {
                ClaimInfoManager.Create(list);
            }

            //return View(list);
            var list1 = ClaimInfoManager.Entitys().Include(p => p.AppRoles).ToList();
            return(View(list1));
        }