MasterPage 上的 ASP.Net MVC 身份验证检查

发布于 2024-10-11 19:10:47 字数 115 浏览 2 评论 0原文

我想在我的 MasterPage 中添加对 Request.IsAuthenticated 的检查(COntroller?有这样的事情吗??)。这可能吗?如果检查失败,我想重定向到 NoAccess.aspx 页面。

I would like to add a check for Request.IsAuthenticated into my MasterPage (COntroller? Is there such a thing??). Is this possible? I want to redirect to a NoAccess.aspx page if the check fails.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

倾听心声的旋律 2024-10-18 19:10:47

MVC 的概念与 Web 表单不同,在 Web 表单中您可以在 master 上执行通用逻辑。

在 ASP.NET MVC 母版页中必须仅包含 UI 相关设置。

在 MVC 中,您使用操作过滤器:用 [Authorize] 装饰您的操作。

The concept on MVC is different to web forms where you would do common logic on the master.

In ASP.NET MVC master page must only contain UI related setup.

In MVC you use Action filters: decorate your actions with [Authorize].

不爱素颜 2024-10-18 19:10:47

您是否使用默认的 MVC 项目模板创建了项目?它已经拥有您正在寻找的一切。如果您现在不继续创建一个。

一旦你进入那里,你就会注意到 @Aliostad 提到的 [Authorize] 属性。这些是在控制器级别进行验证的自定义属性。

查看有关 Web 表单安全性的 MVC 教程,了解有关其如何结合在一起的更详细的说明:http://www.asp.net/mvc/tutorials/authenticating-users-with-forms-authentication-cs

Did you create a project using the default MVC project template? It has everything you're looking for already in there. If you didn't go ahead and create one now.

Once you're in there you'll notice the [Authorize] attributes as @Aliostad mentioned. These are custom attributes that do the validation on the controller level.

Check out the MVC tutorial on web form security for a more detailed run-down on how it all meshes together: http://www.asp.net/mvc/tutorials/authenticating-users-with-forms-authentication-cs

提笔书几行 2024-10-18 19:10:47

您可以通过创建自己的自定义身份验证属性来实现此目的。

在您的项目中创建一个新的过滤器文件夹并添加以下类

public class NoAccessDirectAuthorizeAttribute : AuthorizeAttribute
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
            filterContext.Result = new RedirectResult("noaccess.aspx");
    }
}

,然后使用授权属性装饰您的主控制器和其他所需的控制器

[NoAccessDirectAuthorizeAttribute]
public class HomeController : Controller

这会将未经身份验证的用户重定向到您的 noaccess.aspx 页面

You can achieve this by creating your own custom authentication attribute.

Create a new filter folder within your project and add the following class

public class NoAccessDirectAuthorizeAttribute : AuthorizeAttribute
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
            filterContext.Result = new RedirectResult("noaccess.aspx");
    }
}

then decorate your home controller and other required controllers with the Authorization Attribute

[NoAccessDirectAuthorizeAttribute]
public class HomeController : Controller

This will redirect an unathenticated user to your noaccess.aspx page

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文