- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用Devise和CanCan成功制作了登录系统,我有3种类型的用户。管理员、内部和全局用户。我创建了 Controller 和索引操作:Admin、Cpanel、Report 和 State,并且我想限制某些用户对这些 Controller 的访问。
管理员用户 应具有访问权限:报告(全部)、状态(读取)、管理员(全部)
全局用户应具有访问权限:报告(只读)、状态(读取)、Cpanel(全部)
内部用户 应具有访问权限:报告(全部)、状态(读取)
我尝试使用ability.rs中的以下代码来做到这一点 :
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role? :admin
can :manage, [Report, Admin]
can :read, State
elsif user.role? :global_user
can :read, [Report, State]
can :manage, Cpanel
elsif user.role? :internal_user
can :manage, Report
can :read, State
end
end
end
最佳答案
如果我要阻止对整个 Controller 的访问,我会创建一个 before 过滤器,如果用户没有管理员角色,则将用户重定向到访问被拒绝的页面。可能看起来像:
def check_permissions
raise CanCan::AccessDenied unless @current_user.role?(:admin)
end
def update
raise CanCan::AccessDenied unless can?(:update,Thing)
...
end
def create
raise CanCan::AccessDenied unless can?(:create,Thing)
...
end
CanCan::AccessDenied
您的应用程序 Controller 中的异常:
rescue_from CanCan::AccessDenied do |exception|
flash[:error] = exception.message
redirect_to no_access_path
end
# Make the current user object available to views
#----------------------------------------------------------------------------
def get_user
@current_user = session[:current_user]
end
关于ruby-on-rails - 设置 CanCan ability.rs 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5162078/
Ability Ability概述 Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Abilit
Service Ability Service Ability基本概念 基于Service模板的Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供
Data Ability基本概念 使用Data模板的Ability(以下简称“Data”)有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。Data既可用于同设备不同应用的
Page Ability Page Ability基本概念 Page与AbilitySlice Page模板(以下简称“Page”)是FA唯一支持的模板,用于提供与用户交互的能力。一个Page可以由一
我知道我可以像这样添加动态“字段”: import collection.mutable class DynamicType extends Dynamic { private val field
我想替换MultiSelect与 select2 ,但第一个有一个很棒的功能,允许您单击组标题来匹配其所有子项目。 是否可以用 select2 做类似的事情? 最佳答案 select2 确实允许您选择
在我的 ability.rb ,我有以下规则: elsif user.has_role? :demo can :read, Profile, demo_featured: true, demo_l
我在运行 puppet puppet agent -t 时收到此错误: Error: /Stage[main]/Environment/Environment::Createenv[shared2]/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: hide scrollbar while still able to scroll with mouse/k
我是 Rails 开发的新手,我正在尝试创建我的第一个引擎。该引擎可以使用 CanCan用于授权和限制用户的权限。 我在我的引擎中有一些权限,我想在我的主应用程序中继承它们。 例如: 在我的引擎中文件
我的网站有一个重要的角色方面,我的 ability.rb 文件已经发展成为一个庞然大物。现在它每次都会进行 25 次查询以检查“角色”记录 load_and_authorize_resource叫做。
我用Devise和CanCan成功制作了登录系统,我有3种类型的用户。管理员、内部和全局用户。我创建了 Controller 和索引操作:Admin、Cpanel、Report 和 State,并且我
我正在使用 cancancan 进行授权。 我想允许任何人对某个范围内的用户进行读取访问。 我在 user.rb 中有这个 - class User { describes scope, works
我目前在 Postgres 中工作,并且正在创建一些用户。在创建这些用户并对其进行测试时,我注意到他们能够查看比他们有权访问的更多的模式。除此之外,他们还可以查看受限的 Schemas 表、 View
我在名为 Support 的 lib 文件夹中有一个引擎。在该文件夹中,我有一个 Ticket Controller 。 我在主应用程序中创建了一个能力类,我正试图管理管理员角色的所有模型。当我调用
我正在尝试 Swift 书中的一些示例,即他们拥有的引入下标选项的矩阵示例。这是我的代码: struct Matrix { let rows: Int, columns: Int va
我 fork 了优秀的 zen-coding 项目,想用 ^ 实现 DOM 提升 - 所以你可以这样做: html>head>title^body>h1 而不是 html>(head>title)+b
我有一个具有以下模型的 Rails 应用程序: class User user.id can :manage, :administration, :user_id => user.id
我想通过组合几个现有组件来创建一个(希望是简单的)自定义 Swing 组件。就我而言,它是一个开关,由一个 JLabel 和两个用于打开和关闭的 JButton 组成。我通过扩展 JPanel 开始
如果我重复这个问题,我很抱歉,但我没有找到解决我的问题的方法。 在 React 中检测浏览器切换标签或隐藏浏览器窗口的最佳方法是什么? 我知道有一个 Page visibility API但是我该如何
我是一名优秀的程序员,十分优秀!