[英]How to access only one specific page YII2 (Advanced Template)?
I have a special case for the user in my project. 我在我的项目中为用户提供了一种特殊情况。 if user's subscription is expired (I check this in
login action
), he will be redirected to his profile
to edit some choices. 如果用户的订阅已过期(我在
login action
对此进行了检查),他将被重定向到其profile
以编辑一些选择。 How can I prevent him from access any page except his profile
. 如何阻止他访问除他的
profile
以外的任何页面。 This is my code in login action
这是我
login action
代码
if($subPaymentType == 'free'){
$subHours = $data[0]['sub_hours'];
$minutes = $subHours * 60 * 60;
$start_time = date('d-m-Y H:i:s', $startDate);
$endDate = $minutes + strtotime($start_time);
$endDate = date('d-m-Y H:i:s', $endDate);
if(strtotime(date('d-m-Y:')) < strtotime($endDate)){
$model->login();
}else{
$model->login();
//User can access this only page only
return $this->redirect(['user/view/?id='.Yii::$app->user->id]);
}
}
You can use use AccessControl in your controller 您可以在控制器中使用use AccessControl
yii\filters\AccessControl;
class YourSiteController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['login','profile'],
'allow' => true,
'roles' => ['*'],
],
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
];
}
see this guide for more http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html 有关更多信息,请参阅本指南http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html
and in the related actionView 并在相关的actionView中
public function actionView($id)
{
if ($id != Yii::$app->user->id){
// not allowed ... perform the action you need in this case
} else {
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.