如何在 Yii2 中授予用户访问下一课程的权限?

问题描述 投票:0回答:0

我正计划实施一门语言课程,其课程可通过

lesson
操作和课程
id
访问,例如,第一节课可通过 url
../lesson.php?id=1
访问。但我希望用户在没有解决上一个练习的情况下无法访问课程。

然后,除了阻止用户从界面访问课程外,我还在控制器的访问控制部分编写了以下代码

behaviors()
方法,并且有效:

[
    'actions' => ['lesson'],
    'allow' => Yii::$app->user->learnLesson >= Yii::$app->request->get('id'),
],

但现在我想知道当用户成功完成一节课的练习时,更新用户的

learnLesson
属性的最安全方法是什么。

在每个课程页面中都有一个

next
按钮,用于访问下一课,只有在用户完成所有练习后才会启用。在允许访问下一课之前,javascript 还可以检查所有练习是否已完成。所以,第一页的
next
按钮可以调用url
.../lesson.php?id=2
,但用户还没有被允许访问该课程。

按钮显然可以调用另一个操作,更新用户的

learnLesson
属性并重定向到
lesson
操作,但地址栏中的每个人都可以调用此操作。我可以将按钮放在一个表单中并通过
post
协议发送数据,但这是否安全或者也可以被绕过?或者有更好的解决方案吗?

谢谢

yii2 rights
© www.soinside.com 2019 - 2024. All rights reserved.