グローバルフィルタのログイン認証

  //检查登录
    パブリッククラスCheckLoginFilter:IAuthorizationFilter 
    { 
        公共ボイドOnAuthorization(AuthorizationContext filterContext)
        { 
            //不验证属性则只需取值
            場合(filterContext.ActionDescriptor.IsDefined(typeof演算(AllowAnonymousAttribute)、真)|| filterContext.ActionDescriptor.ControllerDescriptor .IsDefined(typeof演算(AllowAnonymousAttribute)、TRUE))
            { 
                IF(filterContext.HttpContext.Request.Cookies [ "トークン"] = NULL){!
                    文字列トークン= filterContext.HttpContext.Request.Cookies [ "トークン"]の値。
                    (トークン!= "")であれば
                    { 
                        //如果クッキーの存在の则判断セッション
                        IF(filterContext.HttpContext.Session [トークン] == NULL)
                        { 
                            GuserService BLL =新しいGuserService()。
                            GuserDTOモデル= bll.GetUserByToken(トークン)。
                            IF(モデル== NULL){ 
                                リターン。
                            } 
                            filterContext.HttpContext.Session [トークン] =モデル。
                            filterContext.Controller.ViewBag.UserName = model.userName。
                            filterContext.Controller.ViewBag.Uid = model.id。
                        } 
                        {
                            GuserDTOモデル=(GuserDTO)filterContext.HttpContext.Session [トークン]。
                            filterContext.Controller.ViewBag.UserName = model.userName。
                            filterContext.Controller.ViewBag.Uid = model.id。

                            返します。
                        } 
                    } 
                    他{ 
                        返します。
                    } 
                } 
                を返します。
            } 
            他{ 
                列= actionNameのfilterContext.ActionDescriptor.ActionName。
                文字列CTRLNAME = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName。
                文字列にreturnurl = + CTRLNAME + "/" + actionNameの"にreturnurl = /?"; 
                //判断储存トークン的クッキー存在与否
                IF(filterContext.HttpContext.Request.Cookies [ "トークン"] == NULL)
                { 
                    filterContext.Result =新しいRedirectResult( "/ホーム/ログイン" +にreturnurl)。
                } 
                他{ 
                    文字列トークン= filterContext.HttpContext.Request.Cookies [ "トークン"]の値。
                    IF(トークン== "")
                    { 
                        filterContext。
                    } 
                    { 
                        //如果クッキー存在则判断セッション
                        IF(filterContext.HttpContext.Session [トークン] == NULL)
                        { 
                            GuserServiceのBLL =新しいGuserService()。
                            GuserDTOモデル= bll.GetUserByToken(トークン)。
                            filterContext.HttpContext.Session [トークン] =モデル。
                            filterContext.Controller.ViewBag.UserName = model.userName。
                            filterContext.Controller.ViewBag.Uid = model.id。
                        } 
                        他{
                            GuserDTOモデル=(GuserDTO)filterContext.HttpContext.Session [トークン]。
                            filterContext.Controller.ViewBag.UserName = model.userName。
                            filterContext.Controller.ViewBag.Uid = model.id。
                        } 
                    } 
                } 
            } 
        } 
    }

  

おすすめ

転載: www.cnblogs.com/Kuleft/p/11088160.html