我正在使用Catalyst,Catalyst::Plugin::Authentication
并且
Catalyst::Plugin::Authorization::Roles
想知道是否有更好的方法来向我没有看到的模型添加属性。
每个用户都可以访问一个或多个公司,但一次总是有一个主要(当前)公司。允许的列表存储在数据库中,数据库访问主要是通过DBIC
.
我的第一个倾向是说拥有当前公司的是用户,因此将其作为用户模型的一部分:给用户包一个“ sub company { … }
”以获取/设置用户当前的公司。数据库检查相当容易;只需使用“ $self->search_related
”(一种 DBIC 方法,由用户模型继承)。
我遇到的问题是:
- 当前公司需要在请求之间持久化,但我宁愿不将其存储到数据库中(它应该只在此会话中持久化)。自然的地方是会议……</li>
- 有一个角色,类似于 Unix 的
root
,它允许您充当 任何公司,而忽略数据库中的列表。检查这个角色可以通过数据库完成,但在应用程序使用$c->assert_user_role
和朋友的其他任何地方。
我听说最好让模型尽可能独立于催化剂。让模型进行操作似乎也很奇怪
$c->session
。
当然,我可以将这些检查移至控制器,并让模型接受控制器发送的任何内容,但这严重违反了 DRY,如果我在某处忘记其中一个检查,则只是乞求安全问题。
有什么建议么?还是我只是耸耸肩,继续在模型中做?
谢谢,并为标题道歉,我想不出一个好的标题。