在Controllers里建一个ControllerBase,让其它Controller都继承它即可
public
class ControllerBase : Controller{
protected bool _needPermission = true ; public ControllerBase():
base (){
}
protected override void ExecuteCore(){
if (!CheckLogon()){
var ar = RedirectToAction( "LogOn" , "Account" , new System.Web.Routing. RouteValueDictionary ( new { returnUrl = Request.Url.PathAndQuery }));ar.ExecuteResult(
this .ControllerContext);}
else{
base .ExecuteCore();}
}
/// <summary> /// Check user logon state /// </summary> /// <returns></returns> private bool CheckLogon(){
if (_needPermission && System.Web. HttpContext .Current.Session[Common.Definitions. SessionKeys .CurrentUser] == null ) // && !AutoLogon()){
return false ;}
else{
return true ;}
}
/// <summary> /// Auto logon by Cookies /// </summary> /// <returns></returns> private bool AutoLogon(){
bool passed = false ; HttpCookie keepLogonCookie = Request.Cookies[Common.Definitions. CookieKeys .KeepUserLogon]; HttpCookie savedUserIDCookie = Request.Cookies[Common.Definitions. CookieKeys .SavedUserID]; int userID; if (keepLogonCookie != null && keepLogonCookie.Value == "1" && savedUserIDCookie!= null && int .TryParse(savedUserIDCookie.Value, out userID)){
Business.
IPersonnelProvider provider = Business. PersonnalProviderAdapter .GetEmployeeProvider();Data.
User user = provider.GetUserInfo(userID); if (user != null ){
//Auto LogonSession[GSC.Common.Definitions.
SessionKeys .CurrentUser] = user;Session[GSC.Common.Definitions.
SessionKeys .CurrentUserPermission] = provider.GetUserToPermission(user.UserID);passed =
true ;}
}
return passed;}
}