这可能吗?MVC asp.net - Windows身份验证重定向到指定的操作
当我进入我的应用程序进行身份验证后,我想检查数据库是否导入了登录用户。如果不是,则应该导入。
我想在windows身份验证成功后立即执行此操作。
是否有另一种方法可以做到这一点?
这可能吗?MVC asp.net - Windows身份验证重定向到指定的操作
当我进入我的应用程序进行身份验证后,我想检查数据库是否导入了登录用户。如果不是,则应该导入。
我想在windows身份验证成功后立即执行此操作。
是否有另一种方法可以做到这一点?
只要用户尝试执行由[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());
}
可以在每个查询中进行检查吗?只要没有用户凭据登录,我的应用程序就不应允许任何用户查看页面。 – tzortzik
是的,它没问题。请记住,HTTP是无状态的,因此如果您要保护页面,每个请求都会进行授权。 –
“导入”是什么意思? –
导入我的数据库。 – tzortzik