Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="TContext"></typeparam>
        /// <param name="actionContext"></param>
        /// <param name="principal"></param>
        public static void SetPrincipalInContext <TContext>(ActionContextBase <TContext> actionContext, IGenericTokenPrincipal principal) where TContext : ActionContextBase <TContext>, new()
        {
            actionContext.NullCheck("actionContext");
            principal.NullCheck("principal");

            GenericTicketTokenContainer container = principal.GetGenericTicketTokenContainer();

            GenericTicketPrincipal genericPrincipal = new GenericTicketPrincipal(container.User, container.RealUser);

            actionContext.Context["Principal"] = genericPrincipal;
        }
Exemplo n.º 2
0
        /// <summary>
        /// 从上下文中读取指定类型的Principal,如果不存在,或者类型不匹配,则抛出异常
        /// </summary>
        /// <typeparam name="TPrincipal"></typeparam>
        /// <typeparam name="TActionContext"></typeparam>
        /// <param name="actionContext"></param>
        /// <returns></returns>
        public static TPrincipal GetPrincipalInContext <TPrincipal, TActionContext>(ActionContextBase <TActionContext> actionContext)
            where TPrincipal : class, IPrincipal
            where TActionContext : ActionContextBase <TActionContext>, new()
        {
            actionContext.NullCheck("actionContext");

            object objectPrincipal = null;

            actionContext.Context.TryGetValue("Principal", out objectPrincipal);

            return(objectPrincipal as TPrincipal);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 从上下文中读取指定类型的Principal,如果不存在,或者类型不匹配,则返回null
        /// </summary>
        /// <typeparam name="TPrincipal"></typeparam>
        /// <typeparam name="TActionContext"></typeparam>
        /// <param name="actionContext"></param>
        /// <returns></returns>
        public static TPrincipal GetAndCheckPrincipal <TPrincipal, TActionContext>(ActionContextBase <TActionContext> actionContext)
            where TPrincipal : class, IPrincipal
            where TActionContext : ActionContextBase <TActionContext>, new()
        {
            TPrincipal principal = GetPrincipal <TPrincipal>();

            if (principal == null)
            {
                new InvalidOperationException(string.Format("不能在上下文中找到类型为{0}的Principal", typeof(TPrincipal).FullName));
            }

            return(principal);
        }