Как я могу скрыть user_id из URL-адреса с помощью схемы yii?

Я использую структуру 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 идентификаторов. Для большей безопасности вы не должны указывать имя, как «пользователь», которое вы сделали. Попробуйте изменить это даже. Надеюсь, вы поняли … 🙂