这几天项目中做了个过滤器 现在共享一下
/// <summary>
/// 有登录入口的过滤器 继承此BaseController就可以了
/// </summary>
public class BaseController : Controller,IAuthorizationFilter
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectResult("/Home/Index");
}
else {
filterContext.Result = new RedirectResult("/Login/Index");
}
}
/// 有登录入口的过滤器 继承此BaseController就可以了
/// </summary>
public class BaseController : Controller,IAuthorizationFilter
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectResult("/Home/Index");
}
else {
filterContext.Result = new RedirectResult("/Login/Index");
}
}
}
/// <summary>
/// 嵌入到别人的网站下无登录入口过滤器
/// </summary>
public class ValidateLogin : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//在判断IsAuthenticated前要在赋值 使用此方法就可以 FormsAuthentication.SetAuthCookie("testwty",false);
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary(new {controller ="Home",action="ErrorDemo"}));
}
}
}
/// 嵌入到别人的网站下无登录入口过滤器
/// </summary>
public class ValidateLogin : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//在判断IsAuthenticated前要在赋值 使用此方法就可以 FormsAuthentication.SetAuthCookie("testwty",false);
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary(new {controller ="Home",action="ErrorDemo"}));
}
}
}
//在Controller 中添加
[ValidateLogin]属性就可以了
[ValidateLogin]属性就可以了
当然也可以在webconfig中添加
<authorization>
<deny users="?"/>
</authorization>
</authorization>
如果大家有更好的方法希望能共享一下