首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何简单快速的完成用户角色管理和权限控制(7)

如何简单快速的完成用户角色管理和权限控制(7)

利用 devise的sign_in 方法登录已认证的用户如果你的程序已经完成了登录模块,那么在不使用 devise 提供的登录模块的基础上,你依旧可以使用 devise 来记录当前用户。devise 提供了                SignInOut 模块,我们可以通过调用其中的方法来直接进行用户的登录和登出。使用 sign_in 登录用户后,我们就可以用                current_user 来获取当前登录的用户。
# sign_in(resource_or_scope, *args) ⇒ Object
该方法是用来登录一个已经通过验证的方法。一般情况下,我们会在用户注册之后调用该方法,来进行注册用户的首次登录。所有给 sign_in 的选项都将传递给                warden 的 set_user 方法。
sign_in :user, @user # sign_in(scope, resource)
1
sign_in @user                                 # sign_in(resource)




sign_in @user, event: :authentication # sign_in(resource, options)
sign_in @user, store: false # sign_in(resource, options)
#sign_out(resource_or_scope = nil) ⇒ Object
该方法是用来登出指定用户或范围。一般情况下,我们会在删除用户之后调用该方法,用来登出被删除的用户。如果成功登出,会返回                true。如果在指定范围没有该用户,则登出失败,会返回 false。
sign_out :user # sign_out(scope)
sign_out @user # sign_out(resource)
判断用户是否登录我们可以在 controller 中判断用户是否登录,devise 提供了相当简便的方法,我们只需要在 controller 的                before_action 中添加 authenticate_user! 即可。
清单10.                    判断用户是否登录
1
class PapersController < ApplicationController




before_action :authenticate_user!
before_action :set_paper, only: [:show, :edit, :update, :destroy]
def index
@papers = Paper.all
end
……
end
现在我们再访问 /papers,controller 就会先判断我们是否已经登录,未登录的话就会转到登录界面,需要登录才能访问资源。
图4. 未登录访问资源
返回列表