在 mojolicious 中处理路由权限
handling route permissions in mojolicious
我正在与不同类型的用户(管理员、普通用户、来宾)打交道,我想授予每种类型的用户访问 mojolicious 应用程序中不同路由的权限。我的想法是为每个用户类型建立一个权限 table 以便能够访问不同的路由(通过路径或更可能通过操作名称)。
我正在考虑使用 around_dispatch
挂钩在更全局的层面上处理这个问题,并查询数据库以查找可以为哪种用户类型访问哪些操作(子例程)。
这看起来有点像:
$self->hook( around_dispatch => sub ($next,$c) {
if (logged in user has permissions) {
$next->();
} else {
$c->redirect_to('/permission_error');
}
});
我希望确定为给定路线调用的操作。有没有办法在这个挂钩中的 Mojolicious::Controller
对象中向下钻取来执行此操作?
下面提取了我需要的所有信息:
$self->hook(
around_action => sub {
my ($next, $c, $action, $last) = @_;
if (has_permssion($c->current_user,$c->{stash}->{action})) {
return $next->();
} else {
$c->redirect_to('/permission_error');
}
}
);
我使用 Mojolicious::Plugin::Authentication
处理身份验证和用户,has_permission
子例程检查提供的用户是否有权访问所请求的 route/action。
我正在与不同类型的用户(管理员、普通用户、来宾)打交道,我想授予每种类型的用户访问 mojolicious 应用程序中不同路由的权限。我的想法是为每个用户类型建立一个权限 table 以便能够访问不同的路由(通过路径或更可能通过操作名称)。
我正在考虑使用 around_dispatch
挂钩在更全局的层面上处理这个问题,并查询数据库以查找可以为哪种用户类型访问哪些操作(子例程)。
这看起来有点像:
$self->hook( around_dispatch => sub ($next,$c) {
if (logged in user has permissions) {
$next->();
} else {
$c->redirect_to('/permission_error');
}
});
我希望确定为给定路线调用的操作。有没有办法在这个挂钩中的 Mojolicious::Controller
对象中向下钻取来执行此操作?
下面提取了我需要的所有信息:
$self->hook(
around_action => sub {
my ($next, $c, $action, $last) = @_;
if (has_permssion($c->current_user,$c->{stash}->{action})) {
return $next->();
} else {
$c->redirect_to('/permission_error');
}
}
);
我使用 Mojolicious::Plugin::Authentication
处理身份验证和用户,has_permission
子例程检查提供的用户是否有权访问所请求的 route/action。