gpt4 book ai didi

c# - ASP.NET MVC 上的 Active Directory 身份验证

转载 作者:太空狗 更新时间:2023-10-30 01:26:08 26 4
gpt4 key购买 nike

我的数据库中有几个表指定女巫用户(取决于您的 AD 用户名)实际上可以使用我正在构建的当前 ASP.NET MVC 2 应用程序。

我的问题是如何(或者更可能是我应该把它放在哪里?在母版页上??)我要写一个方法让 AD 用户脱离 HTTP 上下文并根据数据库验证它是否您实际上可以使用该应用程序吗?如果可以的话……我的想法是用我需要的信息(角色、全名等)在 Session 对象中写几个键。

我很困惑我应该如何完成这个以及它是否真的是正确的方法...请记住,我的应用程序中有一个管理部分和一个非管理部分。

有什么想法吗?

编辑:请记住,我不关心通过表单对用户进行身份验证。我只想检查根据我的数据库和您的 AD 用户名是否可以使用我的应用程序。如果你能写信给session为了消亡我需要的信息。否则只是抛出一个错误页面。

这是我目前已经实现的,这是要走的路吗?第二种方法有什么用? (对不起,我是 c# 的新手)我想做的实际上是在您未被授权时抛出一个 View ...

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;
}

最佳答案

你可以 activate and use Windows (NTLM) authentication然后编写一个自定义 [Authorize] 属性,您可以在其中获取当前连接的 AD 用户,并执行额外检查以检查他是否有权对您的数据存储使用该应用程序。然后,您将使用此自定义属性装饰需要授权的 Controller /操作。


更新:

以下是此类自定义属性的示例:

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()
{
...
}
}

关于c# - ASP.NET MVC 上的 Active Directory 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5606173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com