Я использую структуру yii и имею разные учетные записи пользователей. Когда я хочу взглянуть на страницу просмотра пользователя 4, мне нужно ввести URL-адрес, например, www.mydomain.com/user/4
для обновления. У меня есть www.mydomain.com/user/update/4
.
Есть ли способ, чтобы я мог скрывать идентификатор пользователя из строки url?
Как установить маршрут, например, www.mydomain.com/user/username
и www.mydomain.com/user/update/username
? Нужно ли мне изменять маршруты?
Что, если username
содержит символы @?
Если у каждого пользователя есть уникальное имя пользователя, вы можете описать маршрут, который не показывает свой идентификатор пользователя, поместив это настраиваемое правило маршрутизации в config/main
:
'urlManager' => array( 'rules' => array( 'user/<username:\S+>' => 'users/view', ) )
\S+
должен принимать "@". Затем передайте это имя пользователя controllers/UsersController
следующим образом:
public function actionView($username) {...}
Вместо www.mydomain.com/user/update/username
я бы воспользовался www.mydomain.com/user/<username>/update
и поместил это в вышеупомянутый массив правил urlManager:
'user/<username:\S+>/update' => 'users/update',
и это в UsersController
:
public function actionUpdate($username) {...}
Вы также можете создать уникальное случайное число для каждого пользователя до создания и маршрута на основе этого номера.
Я думаю, что лучше зашифровать свой идентификатор, прежде чем передавать его. И расшифруйте его, когда вы доберетесь туда. Существует множество способов генерации таких случайных / encrpted идентификаторов. Для большей безопасности вы не должны указывать имя, как «пользователь», которое вы сделали. Попробуйте изменить это даже. Надеюсь, вы поняли … 🙂