Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Passport.js 在没有keystone用户模型的情况下,是否可以在keystone.js中进行用户自定义身份验证?_Passport.js_Keystonejs - Fatal编程技术网

Passport.js 在没有keystone用户模型的情况下,是否可以在keystone.js中进行用户自定义身份验证?

Passport.js 在没有keystone用户模型的情况下,是否可以在keystone.js中进行用户自定义身份验证?,passport.js,keystonejs,Passport.js,Keystonejs,关于Keystone中的授权,我有一个(我希望是)快速的问题:似乎“用户”对象是框架中的一个核心依赖项。我想完全避开它,但没有它似乎没有办法让应用程序正常运行 我在这里运行了一个基本旁路: keystone.init({ //... 'auth': (req, res, next)=>{ if(Roles.has(Roles.Admin, Roles.Keyston)){ next(); } else { throw

关于Keystone中的授权,我有一个(我希望是)快速的问题:似乎“用户”对象是框架中的一个核心依赖项。我想完全避开它,但没有它似乎没有办法让应用程序正常运行

我在这里运行了一个基本旁路:

keystone.init({
    //...
    'auth': (req, res, next)=>{
      if(Roles.has(Roles.Admin, Roles.Keyston)){
        next();
      } else {
        throw "403"; //Terminate
      }
    },
    'user model': 'User',
    //...
})
其结果是:

Sorry, an error occurred loading the page (500)

snip\KS2\node_modules\keystone\templates\layout\base.jade:80
> 79| a(href='/keystone/' + User.path + '/' + user.id)= User.getDocumentName(user)
80| | .
81| 
82| //- Common

item.get is not a function
因此,它期望用户对象存在于请求中(即使我使用自己的身份验证方法)。如果我完全禁用身份验证,这看起来很好,而且我可以使用一些中间件来保护路由,但这似乎是相当有缺陷的行为

“用户”对象实际上是框架中的依赖项,还是为了方便起见而存在?删除模型

//'user model' : 'User'
拱顶石

Sorry, an error occurred loading the page (500) Unknown keystone list undefined).
我相当肯定前一个错误与请求中的“用户对象”被设置为愚蠢的东西有关,因此Jade模板崩溃了。是否可以将此用户对象与框架解耦?如果没有,是否可以设置此对象,以便我可以继续使用
passport.js
进行主身份验证

我对这个主题特别感兴趣,因为我想在Keystone.js管理模块中实现基于角色的身份验证,没有更多关于如何工作的信息/解决方法的想法,我没有一个起点

(**编辑错误存在,即使auth设置为false)

即使使用
auth:false
也会退出,因为我有一个“user”对象,该对象显示为null并使模板崩溃

编辑#2
我已经创建了一个补丁,解决了用户身份验证关闭时的崩溃问题,它并没有真正回答这个问题,但它使应用程序再次可用,而无需依赖Keystone.js进行身份验证(这是此CMS的关键要求).

我仍在寻求这方面的帮助,但以下是我暂时绕过它的方法。对于管理控制台来说,应用程序似乎朝着一个全新的方向发展

我正在对该fork发出一个pull请求(我相信这是当前npm上的包)

您可以在此处查看我的叉子:

//标签v3.22的Git补丁 自D28DAE031252FC252598EF8496F336F27C1BBC0起,2001年9月17日星期一00:00:00 摘自:“丹尼尔B.查普曼” 日期:2016年8月30日星期二09:25:50-0600 主题:[补丁]添加了一个本地
auth
变量,用于镜像
keystone.get('auth')
配置设置,以便使用 自定义用户对象(如Passport.js)不会在 A由于“以身份登录”功能而导致的管理页面

---
 lib/core/render.js         | 1 +
 templates/layout/base.jade | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/core/render.js b/lib/core/render.js
index 5d80453..2b03b7f 100644
--- a/lib/core/render.js
+++ b/lib/core/render.js
@@ -59,6 +59,7 @@ function render(req, res, view, ext) {
        moment: moment,
        numeral: numeral,
        env: keystone.get('env'),
+       auth: keystone.get('auth'),
        brand: keystone.get('brand'),
        appversion : keystone.get('appversion'),
        nav: keystone.nav,
diff --git a/templates/layout/base.jade b/templates/layout/base.jade
index 1caee5e..95639c6 100644
--- a/templates/layout/base.jade
+++ b/templates/layout/base.jade
@@ -73,7 +73,7 @@ html
        #footer: .container
            p   #{brand} #{appversion} 
                | Powered by <a href="http://keystonejs.com" target="_blank">KeystoneJS</a> version #{version}.
-               if User && user
+               if User && user && auth
                    |  Signed in as 
                    a(href='/keystone/' + User.path + '/' + user.id)= User.getDocumentName(user)
                    | .
-- 
1.9.5.msysgit.0
---
lib/core/render.js | 1+
模板/布局/base.jade | 2+-
2个文件已更改,2个插入(+),1个删除(-)
diff——git a/lib/core/render.js b/lib/core/render.js
索引5d80453..2b03b7f 100644
---a/lib/core/render.js
+++b/lib/core/render.js
@@-59,6+59,7@@function render(请求、恢复、视图、扩展){
时刻:时刻,
数字:数字,,
env:keystone.get('env'),
+auth:keystone.get('auth'),
品牌:keystone.get(“品牌”),
appversion:keystone.get('appversion'),
导航:keystone.nav,
diff--git a/templates/layout/base.jade b/templates/layout/base.jade
索引1caee5e..95639c6 100644
---a/templates/layout/base.jade
+++b/模板/布局/base.jade
@@-73,7+73,7@@html
#页脚:。容器
p{brand}{appversion}
|由版本#{version}驱动。
-如果用户&&User
+如果用户&&User&&auth
|以身份登录
a(href='/keystone/'+User.path+'/'+User.id)=User.getDocumentName(User)
| .
-- 
1.9.5.msysgit.0
值得注意的是(这是最近投票的结果),团队拒绝了此修补程序,因此应将其归类为黑客。我将把git存储库留给任何需要它的人。
---
 lib/core/render.js         | 1 +
 templates/layout/base.jade | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/core/render.js b/lib/core/render.js
index 5d80453..2b03b7f 100644
--- a/lib/core/render.js
+++ b/lib/core/render.js
@@ -59,6 +59,7 @@ function render(req, res, view, ext) {
        moment: moment,
        numeral: numeral,
        env: keystone.get('env'),
+       auth: keystone.get('auth'),
        brand: keystone.get('brand'),
        appversion : keystone.get('appversion'),
        nav: keystone.nav,
diff --git a/templates/layout/base.jade b/templates/layout/base.jade
index 1caee5e..95639c6 100644
--- a/templates/layout/base.jade
+++ b/templates/layout/base.jade
@@ -73,7 +73,7 @@ html
        #footer: .container
            p   #{brand} #{appversion} 
                | Powered by <a href="http://keystonejs.com" target="_blank">KeystoneJS</a> version #{version}.
-               if User && user
+               if User && user && auth
                    |  Signed in as 
                    a(href='/keystone/' + User.path + '/' + user.id)= User.getDocumentName(user)
                    | .
-- 
1.9.5.msysgit.0