将用户登录到其子域中

时间:2014-09-11 14:08:55

标签: ruby-on-rails ruby-on-rails-4 subdomain

我已按照本教程进行了授权:https://www.railstutorial.org/book/sign_in_out#cha-sign_in_sign_out。我也像这样添加了子域routes.rb

match '/' => 'students/board', :constraints => { :subdomain => 'student' }

我的用户模型包含一个列,表示用户是否为学生。我没有使用任何额外的插件进行授权,我不想:)

SessionHelper.rb

def sign_in(user)
    remember_token = User.new_remember_token
    cookies.permanent[:remember_token] = remember_token
    user.update_attribute(:remember_token, User.digest(remember_token))
    self.current_user = user
  end
  .
  .
  .
  def sign_out
    current_user.update_attribute(:remember_token,
                                  User.digest(User.new_remember_token))
    cookies.delete(:remember_token)
    self.current_user = nil
  end
end

SessionsController

class SessionsController < ApplicationController
  .
  .
  .
  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      sign_in user
      if(user.student)
          redirect_to root_url(:subdomain => 'student')
      else
          redirect_to root_path
    else
      flash.now[:error] = 'Invalid email/password combination'
      render 'new'
    end
  end
  .
  .
  .
end

当学生尝试登录时,他已成功登录并被重定向到他的子域。问题是他只在主网站site.com上登录,而不是在子网student.site.com上登录。登录并重定向到子域后,他需要再次登录。我希望他只能在他的域student.site.com中登录,而不是在主站点上登录。

最好的方法是什么?谢谢。

0 个答案:

没有答案