首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换Padrino-Warden中的默认身份验证策略

替换Padrino-Warden中的默认身份验证策略
EN

Stack Overflow用户
提问于 2013-02-14 17:33:05
回答 1查看 948关注 0票数 0

我正在努力替换Padrino-Warden gem的默认密码策略。按照我的计算方法,我需要获取warden的管理器实例,以便可以设置默认策略,但我不确定如何在app.rb文件中执行此操作

现在app.rb看起来像这样

代码语言:javascript
复制
register Padrino::Warden

Warden::Strategies.add(:udid) do
    def valid?
      puts "udid strat"
      params[:udid]
    end

    def authenticate!
      user = User.get(:udid => params[:udid])
      user.nil? ? fail!("Could not log in") : success!(user)
    end
end

Warden::Manager.serialize_into_session do |user|
  user.id
end

Warden::Manager.serialize_from_session do |id|
  User.get(id)
end

use ::Warden::Manager do |manager|
     manager.scope_defaults :default, 
      strategies: [:password], 
      action: 'sessions/unauthenticated'
end

这不起作用。管理员环境看起来仍然是这样的

代码语言:javascript
复制
Warden::Proxy:70352196940440 @config={:default_scope=>:default, :scope_defaults=>{}, :default_strategies=>{:_all=>[:password]}, :intercept_401=>true, :failure_app=>Dagis}

如果我在config.ru中配置Warden,它将为warden设置正确的环境,但是我怀疑Padrino提供的会话中间件不能与warden很好地协同工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-14 20:26:04

您需要指示典狱长经理何时使用该策略。更新传递给use方法的strategies密钥,以反映您希望启用哪些策略以及它们的运行顺序。你可以这样做:

代码语言:javascript
复制
use ::Warden::Manager do |manager|
  manager.scope_defaults :default, 
    strategies: [:udid, :password], 
    action: 'sessions/unauthenticated'
end

Warden wiki on github上有一堆例子

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14871632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档