问题标签 [deadbolt-2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
180 浏览

java - 在死锁中使用动态权限时如何获取控制器参数的值

我在控制器上的 Deadbolt 2 中使用动态权限来检查用户是否有权访问资源。这个资源有一个 ID,在我的控制器中,我有一个方法getById(String id)。看起来像这样:

在我在 Deadbolt 中的自定义资源处理程序中,我想使用在调用时传递给方法的 id 字符串(例如,检查当前用户是否拥有由 ID 指定的这个特定项目的所有权)。

ID 至少出现在两个地方:我的 URL,作为路由参数,以及在调用方法时作为参数。如何在我的动态权限控制器中访问此 ID:

我在这里发现了一些关于这个问题的东西,但它很老套,而且是 6 年前的事了,我有点希望有一种更清洁的方法来做到这一点。

0 投票
2 回答
296 浏览

scala - Scala DeadboltAction 然后自定义播放 ActionBuilder

这是我的问题:我需要使用死锁检查控制器的用户权限,然后向请求中添加一些内容(使用 ActionBuilder)。通常使用 Play Action Builders,(action1 andThen action2)但这不适用于 DeadboltActions。

这里有一些代码:

动作生成器

控制器:

[错误] 未应用的方法仅在需要函数类型时才转换为函数。您可以通过编写Pattern _Pattern(_,_,_,_,_)(_)(_)代替Pattern.

[错误] def createSomething: Action[AnyContent] = (deadbolt.Pattern("Create_Deck", PatternType.EQUALITY)() andThen itemAction).synchronized() { 隐式请求:ItemRequest[AnyContent] =>

有谁已经处理过这个问题?

0 投票
1 回答
106 浏览

jackson - 受 Deadbolt“限制”注释影响的 Jackson 解串器

Could not resolve type id 'path.to.MyClass' as a subtype of [simple type, class java.lang.Object]: no such class found当我尝试Map<String, MyClass>使用 @Restrict 注释将 JSON 反序列化到路由操作内部时,我在使用 DeadBolt(2.6.3 和 2.7.0)的 play 2.7 服务器上收到异常。如果删除此注释,一切正常。

MyClass.java

连载Map<String, MyClass>

输出

JSON 格式看起来如此,因为它向后兼容使用旧 FlexJson 的旧服务器。

反序列化

0 投票
0 回答
73 浏览

playframework - 如何将信息从 DeadboltHanlder 传递到 Controller-Method (Play Framework 2.8)

在我们的 Play Framework 应用程序中,我们使用Deadbolt模块进行用户身份验证。这意味着getSubject()我们的 DeadboltHandler 实现的方法将在实际的 Controller 方法之前被调用。但是,我们需要将确定的 User-ID 从 DeadboltHandler 的getSubject()方法传输到 Controller 方法。

直到并包括 Play Framework 2.6,这可以通过将 User-ID 添加到 来轻松完成HttpContext.args,因为HttpContextgetSubject()Controller-Method 和 Controller-Method 中都可以使用。不幸的是,在 Play Framework 2.7 及更高版本中,不再HttpContext- 我们必须HttpRequest直接使用。但这似乎HttpRequest是一成不变的;我们无法HttpRequest轻松添加确定的用户 ID。

是的,有Http.Request.withAttrs(),但这不会修改HttpRequest对象,而是返回一个新HttpRequest对象。因此,据我所知,这对于将任何信息从方法传递到 Controller 方法没有帮助。getSubject()

那么,在 Play Framework 2.7+ 中将特定于请求的信息从 DeadboltHandler 传递到 Controller-Method 的推荐方法是什么???

控制器类:

DeadboltHandler 实现:

注意:MyDeadboltHandler.subject()确定 的方法由框架隐式Subject调用,然后调用实际的控制器方法。

谢谢你和最好的问候。