From 6a397ff1d15e3b7083ccbe8f96d16a08df463ea1 Mon Sep 17 00:00:00 2001 From: sagilio Date: Tue, 21 Mar 2023 00:28:43 +0800 Subject: [PATCH] fix: Not use ref values to transform Signed-off-by: sagilio --- .../WebApplicationSample/CasbinConfigs/basic_policy.csv | 2 +- .../WebApplicationSample/Controllers/HomeController.cs | 8 ++++---- .../Views/Home/AttribRouteTest.cshtml | 8 -------- .../WebApplicationSample/Views/Home/AttributeTest.cshtml | 0 samples/WebApplicationSample/Views/Home/Index.cshtml | 4 ++-- .../Transformers/BasicRequestTransformer.cs | 4 ++-- .../Transformers/KeyMatchRequestTransformer.cs | 4 ++-- .../Transformers/RbacRequestTransformer.cs | 4 ++-- 8 files changed, 13 insertions(+), 21 deletions(-) delete mode 100644 samples/WebApplicationSample/Views/Home/AttribRouteTest.cshtml create mode 100644 samples/WebApplicationSample/Views/Home/AttributeTest.cshtml diff --git a/samples/WebApplicationSample/CasbinConfigs/basic_policy.csv b/samples/WebApplicationSample/CasbinConfigs/basic_policy.csv index 52f0cf5..58bcad0 100644 --- a/samples/WebApplicationSample/CasbinConfigs/basic_policy.csv +++ b/samples/WebApplicationSample/CasbinConfigs/basic_policy.csv @@ -2,7 +2,7 @@ p, alice@example.com, BasicTest, Get # Policy below will only match if using the CustomRequestTransformer -p, alice@example.com, /attribtest, GET +p, alice@example.com, /AttributeTest, GET # Policy below will only match if using the CustomRequestTransformer #p, alice@example.com, /home/privacy, GET diff --git a/samples/WebApplicationSample/Controllers/HomeController.cs b/samples/WebApplicationSample/Controllers/HomeController.cs index a1c0cad..383a8c9 100644 --- a/samples/WebApplicationSample/Controllers/HomeController.cs +++ b/samples/WebApplicationSample/Controllers/HomeController.cs @@ -22,14 +22,14 @@ public IActionResult Index() return View(); } - [HttpGet("attribtest")] - [CasbinAuthorize] - public IActionResult AttribRouteTest(string tenantId) + [HttpGet("AttributeTest")] + [CasbinAuthorize(RequestTransformerType = typeof(KeyMatchRequestTransformer))] + public IActionResult AttributeTest(string tenantId) { return View(); } - [CasbinAuthorize(nameof(BasicTest), nameof(HttpMethod.Get))] + [CasbinAuthorize(nameof(BasicTest), nameof(HttpMethod.Get), RequestTransformerType = typeof(BasicRequestTransformer))] public IActionResult BasicTest() { return View(); diff --git a/samples/WebApplicationSample/Views/Home/AttribRouteTest.cshtml b/samples/WebApplicationSample/Views/Home/AttribRouteTest.cshtml deleted file mode 100644 index fff0703..0000000 --- a/samples/WebApplicationSample/Views/Home/AttribRouteTest.cshtml +++ /dev/null @@ -1,8 +0,0 @@ -@{ - ViewData["Title"] = "Attribute Routed Test Page"; -} - -
-

Welcome

-

Learn about building Web apps with ASP.NET Core.

-
diff --git a/samples/WebApplicationSample/Views/Home/AttributeTest.cshtml b/samples/WebApplicationSample/Views/Home/AttributeTest.cshtml new file mode 100644 index 0000000..e69de29 diff --git a/samples/WebApplicationSample/Views/Home/Index.cshtml b/samples/WebApplicationSample/Views/Home/Index.cshtml index ee4a12a..9346082 100644 --- a/samples/WebApplicationSample/Views/Home/Index.cshtml +++ b/samples/WebApplicationSample/Views/Home/Index.cshtml @@ -4,6 +4,6 @@

Welcome

-

Basic Model : Policy is "p, alice@example.com, BasicTest, GET" - Test.

-

Attrib Route : Policy is "p, alice@example.com, /attribtest, GET" - Attribute Route Test.

+

Basic Model : Policy is "p, alice@example.com, BasicTest, GET" - Basic Test.

+

Attrib Route : Policy is "p, alice@example.com, /Attribute, GET" - Attribute Test.

diff --git a/src/Casbin.AspNetCore.Core/Transformers/BasicRequestTransformer.cs b/src/Casbin.AspNetCore.Core/Transformers/BasicRequestTransformer.cs index f9ed3d0..d909eb9 100644 --- a/src/Casbin.AspNetCore.Core/Transformers/BasicRequestTransformer.cs +++ b/src/Casbin.AspNetCore.Core/Transformers/BasicRequestTransformer.cs @@ -16,13 +16,13 @@ public override ValueTask TransformAsync( ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { - ref var values = ref data.Values; + var values = data.Values; string? value1 = values.Value1; string? value2 = values.Value2; values.TrySetValue(0, SubTransform(context, data)); values.TrySetValue(1, value1); values.TrySetValue(2, value2); - return new ValueTask(data.Values); + return new ValueTask(values); } protected virtual string SubTransform(ICasbinAuthorizationContext context, ICasbinAuthorizationData data) diff --git a/src/Casbin.AspNetCore.Core/Transformers/KeyMatchRequestTransformer.cs b/src/Casbin.AspNetCore.Core/Transformers/KeyMatchRequestTransformer.cs index cb16ee0..5be297e 100644 --- a/src/Casbin.AspNetCore.Core/Transformers/KeyMatchRequestTransformer.cs +++ b/src/Casbin.AspNetCore.Core/Transformers/KeyMatchRequestTransformer.cs @@ -10,11 +10,11 @@ public override ValueTask TransformAsync( ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { - ref var values = ref data.Values; + var values = data.Values; values.TrySetValue(0, SubTransform(context, data)); values.TrySetValue(1, context.HttpContext.Request.Path.Value); values.TrySetValue(2, context.HttpContext.Request.Method); - return new ValueTask(data.Values); + return new ValueTask(values); } } } diff --git a/src/Casbin.AspNetCore.Core/Transformers/RbacRequestTransformer.cs b/src/Casbin.AspNetCore.Core/Transformers/RbacRequestTransformer.cs index e5a7910..2bdbaa9 100644 --- a/src/Casbin.AspNetCore.Core/Transformers/RbacRequestTransformer.cs +++ b/src/Casbin.AspNetCore.Core/Transformers/RbacRequestTransformer.cs @@ -14,7 +14,7 @@ public override ValueTask TransformAsync( ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { - ref var values = ref data.Values; + var values = data.Values; string? value1 = values.Value1; string? value2 = values.Value2; string? value3 = values.Value3; @@ -22,7 +22,7 @@ public override ValueTask TransformAsync( values.TrySetValue(1, value1); values.TrySetValue(2, value2); values.TrySetValue(3, value3); - return new ValueTask(data.Values); + return new ValueTask(values); } } }