![](/img/trans.png)
[英]ASP.NET MVC 5: App Pool, Windows Authentication and Active Directory
[英]Active Directory Authentication on ASP.NET MVC
我在我的数据库上有几个表指定女性用户(取决于您的AD用户名)实际上可以使用我正在构建的当前ASP.NET MVC 2应用程序。
我的问题是如何(或者更可能放在哪里和哪里?在母版页上?)我是否编写了一个方法,将AD用户从HTTP上下文中取出并对数据库进行验证,看看你是否真的可以使用该应用程序? 如果你能...想法是在Session对象中用我需要的信息(角色,全名等)写几个键。
关于我应该如何实现这个以及它是否是正确的方法我很困惑...请记住,我的应用程序中有一个管理部分和非管理部分。
有什么想法吗?
编辑:请记住,我不关心通过表单验证用户。 我要检查的是,根据我的数据库和您的AD用户名,您可以使用我的应用程序。 如果您可以写入会话以消除我需要的信息。 否则只是抛出一个错误页面。
这是我到目前为止实现的,这是要走的路吗? 第二种方法是什么? (对不起,我对c#不熟悉)我想要做的事情实际上如果你没有被授权就抛出一个视图......
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (isAuthorized)
{
var canUse = this._userRepo.CanUserUseApp(httpContext.User.Identity.Name);
if (!canUse)
{
isAuthorized = false;
}
}
return isAuthorized;
}
您可以激活并使用Windows(NTLM)身份验证 ,然后编写自定义[Authorize]
属性,您可以在其中获取当前连接的AD用户,并执行额外检查是否有权对您的数据存储使用该应用程序。 然后,您将使用此自定义属性修饰需要授权的控制器/操作。
更新:
以下是此类自定义属性的示例:
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (isAuthorized)
{
// The user is authorized so far => check his credentials against
// the custom data store
return IsUserAllowedAccess(httpContext.User.Identity.Name);
}
return isAuthorized;
}
private bool IsUserAllowedAccess(string username)
{
throw new NotImplementedException();
}
}
然后:
[MyAuthorize]
public class FooController: Controller
{
public ActionResult Index()
{
...
}
}
使用此代码创建一个名为AdminAttribute的类
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class AdminsAttribute : AuthorizeAttribute { public AdminsAttribute() { this.Roles = "MSH\\GRP_Level1,MSH\\Grp_Level2"; } }
public class HomeController : Controller { [Admins] public ActionResult Level1() { ViewBag.Message = "Welcome to ASP.NET MVC!"; return View(); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.