问题标签 [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 回答
276 浏览

permissions - 在 deadbolt2 中的限制失败时重定向到不同的操作

使用 deadbolt2 和 play-authenticate,我可以根据用户的角色和权限定义对控制器和操作级别的限制。如果当前用户不满足这些限制,AbstractDeadboltHandler.onAuthFailure则在配置的死栓处理程序中被调用。

现在,我想要实现的是拥有不同的用户角色(例如,trial_user、basic_user、pro_user、admin……),并且只允许一些用户调用特定的操作(换句话说:阻止其他用户调用操作。例如,不应允许 trial_user 创建新帖子)。

到目前为止,这是可行的,因为没有所需角色的用户无法调用该操作。但是,问题是:一旦不满足限制,用户就会被重定向到要求他登录的通用“身份验证失败”页面。我认为这是不正确的,因为用户实际上已经登录并且仅缺少某个角色(或具有不得执行该操作的角色)。

我如何onAuthFailure在这种情况下的方法中做出反应?如何区分“用户未登录”和“用户没有特定角色”。显然,总是要求用户登录不是正确的做法。我希望收到“您无权访问该页面”的通知。

我如何知道身份验证失败背后的具体原因?使用deadbolt2甚至可能吗?

0 投票
0 回答
874 浏览

playframework - Play Scala 2.3.x - SecureSocial 或 Sihouette 与 Deadbolt 的集成

我正在尝试使用 Deadbolt 进行授权,并使用 Silhouette 或 SecureSocial 使用 Play 2.3.3 和 Scala 2.11.1 进行身份验证。

MyDeadboltHandler 有一个要覆盖的 getSubject ,为此我需要从请求中检索用户。使用 SecureSocial 2 非常简单。

我无法在剪影中找到任何方法来获取“当前用户”。此外,Silhouette 和 SecureSocial 都有 SecuredRequest[AnyContent](扩展 WrappedRequest),而 MyDeadboltHandler 中的 getRequest 方法需要一个 Request[A]。SecuredRequest 在 MyDeadboltHandler 中不可见的特征中定义。

任何建议都将受到高度赞赏。

0 投票
1 回答
1561 浏览

scala - Play2-Auth vs SecureSocial vs Deadbolt2

我正在使用带有 scala 的 Play2。我是 Play2 和 scala 的新手。我需要在项目中进行身份验证和授权。那么跟随哪个对我最好?为什么?

  1. Play2-Auth
  2. 安全社交
  3. 锁舌2

有没有人喜欢 Spring 安全?我需要基于用户角色的授权,还需要像 google+、facebook 和 twitter 这样的社交登录以及我们自己的登录。

所以请告诉我最适合我的解决方案。并解释为什么最好?

0 投票
1 回答
543 浏览

java - 在 playframework 项目上配置死锁

您好,在我的 playframework 项目中配置 deadbolt 模块时遇到了一个小问题。我正在使用 playframework 2.2.1 版本,我正在一步一步做,就像他们在 deadbolt 文档页面 http://deadbolt.ws/#/java-docs上显示的那样

我遇到的第一个问题是在 application.conf 中,因为在这里我看起来像这样:

我不知道我添加了良好的锁栓配置,因为它看起来与 application.conf 中的其他配置有点不同

当我开始播放应用程序播放调试〜运行

有些东西正在更新和安装,然后我得到错误

也许有人遇到这个问题或者知道我做错了什么,我会非常感谢每一个帮助!

0 投票
1 回答
99 浏览

playframework - 测试用户是否允许使用功能(不是注释)

我想在我的控制器中测试用户的权限,但我需要在运行时更改权限的名称(有时是“projectWrite”,有时是“userWrite”......),但注释需要一个常量,所以我可以不要使用它。

我需要使用一个函数,但我不知道如何通过函数请求授权。这个怎么做 ?

0 投票
1 回答
253 浏览

scala - Deadbolt 2 Restrict 功能只有一个可能的故障代码

这个问题可能带有一点哲学意味。

我一直在我的 Play 应用程序中使用 Deadbolt 2 (Scala),它运行良好。

在查看Restrict 函数定义(第 47 行)时,我注意到它会出于以下原因之一调用 onAuthFailure:

  1. 会话中没有用户(没有主题)
  2. 操作未指定角色。
  3. 用户尝试了他们不具备一个或多个所需角色的操作。

在我的应用程序 UI 中,我希望为每一个接收一个不同的状态代码,以便未登录的用户(条件 1)将被重定向到登录页面,但条件 3 将通过警告更优雅地处理(因为他们无论如何都不会造成伤害,并且可能在他们具有“只读”访问权限时不小心尝试编辑 - 可能是一个 UI 错误,但再次登录有点苛刻)。

但是,如果我只能满足于 2 个状态代码,我会想区分 1 和其他 2。我可以看到如何实现,但想就即使这样做的优点获得其他意见。

如果我要实现此更改,看起来我可以在我自己的 DeadboltActions 特征扩展中覆盖 Restrict 函数。

我对 scala 有点陌生,所以我对如何最好地实现这些目标的其他想法持开放态度。

0 投票
1 回答
286 浏览

playframework - 使用 Deadbolt 玩 java 项目,拥有私有资产

我一直在四处寻找如何配置资产文件夹的示例,通过@routes.Assets 表示法访问它,但只有在用户通过身份验证时才返回资产。

我已经使用谷歌帐户配置了死栓并完美运行,该应用程序运行良好,但不幸的是,当我使用浏览器并记下用于应用程序部分的 Javascript 资产的直接 URL 时,它允许我下载他们没有问题。

所以,总体问题是:有没有办法配置一个只有在用户通过身份验证的情况下才能访问的资产文件夹?

非常感谢

Edit1:我现在的做法是创建一个名为 PrivateAssets 的控制器,并使用一个名为“at”的方法接收字符串路径和字符串文件参数。该方法使用@SubjectPresent 进行注释,我在那里获取文件并返回它。

0 投票
1 回答
274 浏览

scala - 使用 Deadbolt2 的 Playframework:在类型的 trait DeadboltHandler 中覆盖方法 getSubject

我正在使用Deadbolt2授权。当我extends DeadboltHandler 覆盖他们的方法时,我在 Eclipse 中遇到以下错误:

getSubject由于其返回类型,这些是编译时错误并在方法上产生。我将其返回类型声明为Future[Option[Subject]],当我Option[Subject]用作返回类型时,错误被删除。当我看到steve https://github.com/schaloner/deadbolt-2-scala-examples/blob/master/app/security/MyDeadboltHandler.scalaFuture[Option[Subject]]的示例时,当我在 Eclipse 中导入代码时,他使用并且代码中没有错误. 当我使用activator clean compile命令编译代码时,没有编译时错误。

代码:

更新

当我使用 deadboltbe.objectify" %% "deadbolt-scala" % "2.3.2依赖版本时,我在 eclipse 中出现编译时错误并成功构建运行。但是当我使用be.objectify" %% "deadbolt-scala" % "2.3.3依赖版本时,我也会遇到构建错误。

0 投票
2 回答
175 浏览

regex - 使用 Deadbolt 2 的 Playframework:模式正则表达式不匹配

我正在Deadbolt2使用play-framework 2.3.x. 当我尝试Patterns使用正则表达式声明死螺栓来访问控制器时。我收到Not-found错误。根据这个示例Pattern,可以在我们的应用程序中使用正则表达式。但是当我声明一个正则表达式时,我无法使用它。我的代码如下所示:

0 投票
0 回答
96 浏览

scalatest - Scala 测试:模拟死锁身份验证

在运行 scala 测试时,如何模拟 deadbolt auth 以便请求通过?