【问题标题】:Shotgun gets new sessions every time, can't store data in sessionsShotgun 每次都获取新会话,无法在会话中存储数据
【发布时间】:2012-03-22 17:13:02
【问题描述】:

这是书中的一个例子,稍作修改。似乎会话不起作用。每次我得到一个新会话。

#reporter.rb  

     require 'sinatra/base'
    
    class LoginScreen < Sinatra::Base
    
      #configure(:development) { set :session_secret, "something" }
    
      enable :sessions
    
      get('/login') { erb :login }
    
      post('/login') do
        if params[:user][:login] == 'admin' && params[:user][:password] == 'admin'
          session['user_name'] = params[:user][:login]
          redirect '/'
        else
          session[:notice] = "notice!"
          redirect '/login'
        end
      end
    end
    
    class Reporter < Sinatra::Base
      # "прослойка" будет запущена перед фильтрами
      # enable :sessions
      # use Rack::Session::Pool, :expire_after => 2592000
      #configure(:development) { set :session_secret, "something" }
      use LoginScreen
    
      before do
        unless session[:user_name]
          halt "Access denied, please <a href='/login'>login</a>."
        end
      end
    
      get('/') { "Hello #{session['user_name']}." }
    end

config.ru

require './reporter'
run Reporter

login.erb

   <h1>Main User</h1>
    <h1>Welccome to reporter</h1>
    <p>You must log in with your credentials or as "newcomer" </p>
    
    <form   action="/login" method="post" id="user">
        <p>
            <label>login:</label><br />
            <input type="text" name="user[login]" id="login" />
        </p>
    
        <p>
            <label>Password:</label><br />
            <input type="text" name="user[password]" id="password" />
        </p>
    
        <p>
            <input type="submit" value="Log in">
        </p>
    </form>

我正在使用

  • 红宝石 1.9.2
  • sinatra 1.3.2
  • shotgun -s thin -p 4567 - 我如何启动服务器

我就是不明白为什么会话不保存数据?

【问题讨论】:

    标签: session sinatra shotgun


    【解决方案1】:

    你为什么评论

    set :session_secret, "something"
    

    在你的例子中? 如果您使用 shotgun 重新加载服务器,它可以帮助您。

    【讨论】:

    • 谢谢!它有帮助。我不知道为什么,但是我第一次添加该行时并没有帮助我,所以我将其注释掉。但似乎这是我的代码中的问题,而不是霰弹枪中的问题。现在一切正常。 )
    猜你喜欢
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2014-04-25
    • 2015-05-20
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多