首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置IAuthorizationFilter的结果

设置IAuthorizationFilter的结果
EN

Stack Overflow用户
提问于 2008-09-21 06:20:04
回答 2查看 2.4K关注 0票数 2

我希望从失败的IAuthorizationFilter中设置结果操作。但是,我不确定如何从过滤器内部创建ActionResult。控制器似乎不能从过滤器内部访问,所以我通常的视图(“SomeView”)无法工作。有没有一种方法可以获得控件,或者另一种创建actionresult的方法,因为它看起来不是可实例化的?

不起作用:

代码语言:javascript
复制
    [AttributeUsage(AttributeTargets.Method)]
    public sealed class RequiresAuthenticationAttribute : ActionFilterAttribute, IAuthorizationFilter
    {
    public void OnAuthorization(AuthorizationContext context)
    {
        if (!context.HttpContext.User.Identity.IsAuthenticated)
        {
            context.Result = View("User/Login");
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-09-21 09:32:03

您可以直接实例化相应的ActionResult,然后在上下文中设置它。例如:

代码语言:javascript
复制
public void OnAuthorization(AuthorizationContext context)
{
    if (!context.HttpContext.User.Identity.IsAuthenticated)
    {
        context.Result = new ViewResult { ViewName = "Whatever" };
    }
}
票数 1
EN

Stack Overflow用户

发布于 2008-09-21 17:44:12

您应该看看MVC框架AuthorizeAttribute附带的IAuthorizationFilter实现。如果您使用的是表单身份验证,则无需将结果设置为User/Login。您可以发出一个401HTTP status响应,ASP.NET将为您重定向到登录页面。

将结果设置为user/login的一个问题是,用户的地址栏没有更新,因此它们将出现在登录页面上,但URL不匹配。对于一些人来说,这不是一个问题。但有些人希望他们网站的URL与用户在浏览器中看到的内容相对应。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/110384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档