我已按照本教程进行了授权: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
中登录,而不是在主站点上登录。
最好的方法是什么?谢谢。