gpt4 book ai didi

asp.net-mvc - asp.net mvc - 限制对网页的访问

转载 作者:行者123 更新时间:2023-12-02 02:34:12 26 4
gpt4 key购买 nike

您好,在我的 asp.net mvc 应用程序中,我想做的是仅在用户成功授权后才能访问某些页面。我已经创建了自定义成员(member)提供程序并且工作正常。我怎样才能在 web 配置中创建这样的规则——例如 ~Admin/文件夹中的所有页面?我不想在每个 Controller 的操作上创建验证代码。现在我的 web.config 中有以下语句:

    <location path="~/Admin"> 
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>

但它不起作用。

最佳答案

在配置文件中做授权逻辑有一个很大的缺点:它不容易进行单元测试,而像身份验证这样重要的东西应该进行单元测试。为此,我建议您编写一个自定义授权过滤器,该过滤器可用于为所有需要身份验证的管理操作装饰基本 Controller :

[AttributeUsage(
AttributeTargets.Method | AttributeTargets.Class,
Inherited = true
)]
public class RequiresAuthenticationAttribute
: FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectResult(
string.Format("{0}?ReturnUrl={1}",
FormsAuthentication.LoginUrl,
filterContext.HttpContext.Request.Url.AbsoluteUri
)
);
}
}
}

还有你的管理 Controller :

[RequiresAuthentication]
public class AdminController : Controller
{
// .. some actions that require authorized access
}

关于asp.net-mvc - asp.net mvc - 限制对网页的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2530080/

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