2014-02-23 72 views
0

这可能吗?MVC asp.net - Windows身份验证重定向到指定的操作

当我进入我的应用程序进行身份验证后,我想检查数据库是否导入了登录用户。如果不是,则应该导入。

我想在windows身份验证成功后立即执行此操作。

是否有另一种方法可以做到这一点?

+1

“导入”是什么意思? –

+0

导入我的数据库。 – tzortzik

回答

1

只要用户尝试执行由[Authorize]过滤器修饰的操作,就会检查Windows凭据。你可以简单地推导出从一个新的过滤器:

public class ImportAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (base.AuthorizeCore(httpContext)) 
     { 
      //If the base authorize returns true, then authorization has successfully 
      //occurred. 
      var identity = httpContext.User.Identity; 
      //You'll need to figure this part out 
      ImportIdentityIfNotPresent(identity); 
     } 
    } 
} 

现在,你可以通过在操作层面将它限制访问:

[ImportAuthorizeAttribute] 
public ActionResult Create() 

或者在控制器级别:

[ImportAuthorizeAttribute] 
public class AdminController : Controller 

甚至全局编辑FilterConfig.cs在`/ App_Start'中:

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new Code.Filters.MVC.ImportAuthorizeAttribute()); 
    } 
+0

可以在每个查询中进行检查吗?只要没有用户凭据登录,我的应用程序就不应允许任何用户查看页面。 – tzortzik

+0

是的,它没问题。请记住,HTTP是无状态的,因此如果您要保护页面,每个请求都会进行授权。 –