Как я могу скрыть user_id от URL используя yii framework? - PullRequest
2 голосов
/ 01 марта 2012

Я использую инфраструктуру 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 содержит символы @?

Ответы [ 2 ]

5 голосов
/ 01 марта 2012

Если у каждого пользователя есть уникальное имя пользователя, вы можете описать маршрут, который не показывает его идентификатор пользователя, добавив это пользовательское правило маршрутизации в 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) {...}

Вы также можете сгенерировать уникальное случайное число для каждого пользователя перед созданием и маршрутизацией на основе этого числа.

0 голосов
/ 01 марта 2012

Я думаю, лучше зашифровать ваш идентификатор перед его передачейИ расшифруй, когда доберешься туда.Существует много способов генерации таких случайных / зашифрованных идентификаторов.Для большей безопасности вы не должны давать имя типа «пользователь», которое вы указалиПопробуйте изменить это даже.Надеюсь, вы поняли ...:)

...