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

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

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

devise, rolify, cancan: 创建User, Roles, Ability模型运行 generate 命令来生成 User, Roles,                Ability 模型,我们可以看到在 models 文件夹下出现了 user.rb,role.rb 和 ability.rb 三个文件,在这些                model 类中都引入了需要的模块。在 db/migrate 下也出现了各 model 的 migration 文件。
清单5.                创建 User, Roles, Ability 模型shirleydembpeveloperWork shirley$ rails generate devise User
Running via Spring preloader in process 60557
invoke active_record
1
create    db/migrate/20170906125504_devise_create_users.rb




create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
insert app/models/user.rb
route devise_for :users
shirleydembpeveloperWork shirley$ rails generate cancan:ability
Running via Spring preloader in process 60574
create app/models/ability.rb
shirleydembpeveloperWork shirley$ rails generate rolify Role User
Running via Spring preloader in process 60578
invoke active_record
create app/models/role.rb
invoke test_unit
create test/models/role_test.rb
create test/fixtures/roles.yml
insert app/models/role.rb
create db/migrate/20170906125636_rolify_create_roles.rb
insert app/models/user.rb
create config/initializers/rolify.rb
在真正的项目中,我们的用户角色往往并不是那么简单。可以打开 db/migrate 下面的 migration 文件进行编辑,往表中加入你想要的字段。
编辑完 migration 之后,我们需要执行 DB migrate 命令使其生效。
$ rake db:migrate
现在再让我们来查看一下 rails 程序为 user 分配的 routes。
清单6.                rails 为 users 分配的 routesshirleydembpeveloperWork shirley$ rake routes | grep users
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        new_user_session     GET  /users/sign_in(.:format)        devise/sessions#new
             user_session    POST  /users/sign_in(.:format)        devise/sessions#create
    destroy_user_session DELETE  /users/sign_out(.:format)       devise/sessions#destroy
       new_user_password     GET  /users/password/new(.:format)   devise/passwords#new
      edit_user_password     GET  /users/password/edit(.:format) devise/passwords#edit
            user_password   PATCH  /users/password(.:format)       devise/passwords#update
                                 PUT  /users/password(.:format)       devise/passwords#update
                                POST /users/password(.:format)       devise/passwords#create
cancel_user_registration    GET  /users/cancel(.:format)         devise/registrations#cancel
   new_user_registration     GET  /users/sign_up(.:format)       devise/registrations#new
  edit_user_registration     GET  /users/edit(.:format)           devise/registrations#edit
       user_registration    PATCH  /users(.:format)                devise/registrations#update
                                  PUT  /users(.:format)                devise/registrations#update
                              DELETE  /users(.:format)                devise/registrations#destroy
                                POST  /users(.:format)                devise/registrations#create




devise 为我们提供了一整套齐全的登录注册修改密码功能。在 config/routes 中我们设置当用户登录后才能访问主页,不然则跳到                devise 的登录页面。
清单7.                设置系统的登录首页 devise_scope :user do
authenticated :user do
root 'papers#index', as: :authenticated_root
end
unauthenticated do
1
root 'devise/sessions#new', as: :unauthenticated_root




end
end
运行程序,就可以看到 devise 的登录页面,点击 Sign up 注册一个新用户。
图2. devise                    登录界面
返回列表