欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET MVC 利用ActionFilterAttribute来判断用户是否登陆等等

程序员文章站 2023-02-28 17:11:51
actionfilterattribute是action过滤类,该属于会在执行一个action之前先执行.而actionfilterattribute是 vc的一个专门处理action过滤的类.基于...
actionfilterattribute是action过滤类,该属于会在执行一个action之前先执行.而actionfilterattribute是

vc的一个专门处理action过滤的类.基于这个原理,

假设某个action:adminindex,我们给该action的最起码访问要求是用户必须是登陆状态.那么,我们要做的工作就是在

[checklogin()]//在该action上面加一个判断

public actionresult 

adminindex()

{

    return view();

} // end 

adminindex

上面说了,actionfilterattribute是过滤基类,所以checklogin()判断要继承actionfilterattribute如下:

public class 

checkloginattribute : actionfilterattribute

{

    public 

checkloginattribute()

     {}

} // end class 

checkloginattribute

在actionfilterattribute基类中有个抽象方当

public abstract void 

onactionexecuting(actionexecutingcontext 

filtercontext);

顾名思义就是指当要执行一个action之前要做啥工作.在checkloginattribute继承主类后,要将该onactionexecuting(..)方法重写如:

public override void 

onactionexecuting(actionexecutingcontext filtercontext)

{} // end 

action

这样的话,我们就可以将我们想做的处理写在该方法里头.如:

public override void 

onactionexecuting(actionexecutingcontext filtercontext)

{

    // 

如果用户没有登陆

    if(!userlogin.islogined) 

     {

       // 处理方法

        

errorredirect(filtercontext); 

       return;

      

}// end 

if

}www.2cto.com

// 错误处理方法

private void 

 

errorredirect(actionexecutingcontext filtercontext)

{

     

filtercontext.result = new redirecttorouteresult("default", new 

routevaluedictionary(new { controller = "home", action 

"default" }));

} // end 

errorredirect

当执行errorredirect方法时,它会自己选择指定的route并跳转到非adminindex的action中