获得授权属性的许可?

发布于 2024-08-16 04:41:00 字数 171 浏览 1 评论 0原文

我已经实现了自己的 Authorize 属性,并且我注意到当我使用 [Authorize] 时,它会查询以检查权限。

有什么方法可以获取该权限并在应用 Authorize 属性的当前控制器中使用它,而无需重写和重新查询控制器中的代码?

I've implemented my own Authorize attribute, and I notice that it queries to check permissions when I use [Authorize].

Is there any way I can get that permission and use it in the current controller that applies the Authorize attribute without having to rewrite and requery the code in the controller?

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

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

发布评论

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

评论(1

猥琐帝 2024-08-23 04:41:00

是的,你可以。如果您将 Authorize 属性实现为 ActionFilterAttribute,则可以使用 ViewData 集合来存储如下信息:

    public class RequireRegistrationActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;
        HttpResponseBase response = filterContext.HttpContext.Response;

        if (request != null && 
            response != null)
        {
            bool isAuthenticated = request.IsAuthenticated;
            filterContext.Controller.ViewData["IsAuthenticated"] = isAuthenticated;

            if (!isAuthenticated)
            {
                string url = String.Format(
                   "/?ReturnUrl={0}", 
                   HttpUtility.UrlEncode(request.Url.ToString()));
                response.Redirect(url);
            }
        }
    }
}

在带注释的控制器的 acrion 中,您可以通过以下方式访问该字段:

bool isAuthenticated = (bool)(ViewData["IsAuthenticated"] ?? false);

Yes, you can. If you implemented your Authorize attribute as an ActionFilterAttribute you can use the ViewData collection to store information like this :

    public class RequireRegistrationActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;
        HttpResponseBase response = filterContext.HttpContext.Response;

        if (request != null && 
            response != null)
        {
            bool isAuthenticated = request.IsAuthenticated;
            filterContext.Controller.ViewData["IsAuthenticated"] = isAuthenticated;

            if (!isAuthenticated)
            {
                string url = String.Format(
                   "/?ReturnUrl={0}", 
                   HttpUtility.UrlEncode(request.Url.ToString()));
                response.Redirect(url);
            }
        }
    }
}

In the anoteated controller's acrion you can access the field with:

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