使用 Ruby on rails,您可以使用会话和身份验证(gem bcrypt)拥有多种用户类型吗?



如果问题的措辞奇怪,很抱歉,但这是我在这里处理的情况:

我正在尝试为指定的项目使用轨道制作一个基本的 Web 应用程序,并基本上选择创建药房的在线版本。稍后会有更多的复杂性,但现在我相信我只需要制作一个患者模型、控制器、路由和视图,并希望使用名为 bcrypt 的 gem 进行登录身份验证,以及一个做所有相同事情的医生,但他们会离散地访问自己的视图页面,并且只能在身份验证后才能。我正在使用会话控制器,并且也有会话视图。在这一点上,这对我来说变得越来越复杂,因为我对编程很陌生,而且我无法找到一个问题的答案,即是否可以通过"用户"(所有示例和教程如何做到这一点(或通过我目前正在尝试设置的单独用户类型(即"患者"和"医生"(来实现这一切。我真的很感激任何帮助!如果需要,我将尽力澄清更多。

使用"Devise"gem(及其扩展(,您可以执行所有这些操作,包括多种用户类型。顺便说一下,Devise 实际上在自己的实现中使用了 bcrypt。

https://github.com/heartcombo/devise

我很欣赏对这个问题的回答,但是我特别尝试不在这个项目中使用 Devise。我们最终抽象了会话,以便任何一种类型的用户都可以拥有会话、身份验证和授权,以便根据基本选择的路由使其安全。这样,我们就不需要为单独的用户类型创建单独的会话视图和控制器。最重要的是 SessionsController 中的这段代码:

def create
if params[:patient]
@patient = Patient.find_by(email: params[:email])
if @patient && @patient.authenticate(params[:password])
session[:patient_id] = @patient.id
redirect_to @patient
else
render 'patients/login'
end
elsif params[:doctor]
@doctor = Doctor.find_by(email: params[:email])
if @doctor && @doctor.authenticate(params[:password])
session[:doctor_id] = @doctor.id
redirect_to @doctor
else
render 'doctors/login'
end
end
end

最新更新