2012-02-29 2 views
2

yii 프레임 워크를 사용하고 있으며 다른 사용자 계정이 있습니다. 사용자 4의보기 페이지를보고 싶을 때 URL을 www.mydomain.com/user/4과 같이 입력해야합니다. 업데이트하려면 www.mydomain.com/user/update/4이 있습니다.yii 프레임 워크를 사용하여 URL에서 user_id를 숨기려면 어떻게해야합니까?

url 줄에서 사용자 ID를 숨길 수있는 방법이 있습니까?

www.mydomain.com/user/usernamewww.mydomain.com/user/update/username과 같은 경로를 어떻게 설정할 수 있습니까? 경로를 수정해야합니까?

username에 @ 기호가 포함되면 어떻게됩니까?

답변

5

각 사용자가 고유 한 사용자 이름이있는 경우, 당신은 config/main이 사용자 정의 라우팅 규칙을 넣어 자신의 사용자 ID를 표시하지 않는 경로를 설명 할 수 있습니다

'urlManager' => array(
    'rules' => array(
     'user/<username:\S+>' => 'users/view', 
    ) 
) 

\S+ 받아 들여야을 "@". 대신 www.mydomain.com/user/update/username의 내가 www.mydomain.com/user/<username>/update을 사용

public function actionView($username) {...} 

을하고 위의 urlManager 규칙 배열에 넣고 : 다음과 같이 controllers/UsersController에 해당 사용자 이름을 통과 UsersController

'user/<username:\S+>/update' => 'users/update', 

이 :

public function actionUpdate($username) {...} 

생성하기 전에 각 사용자에 대해 고유 한 임의 번호를 생성하고 해당 번호를 기반으로 라우팅 할 수도 있습니다.

+0

그래서 두 규칙을 모두 사용할 것입니까? '사용자/'=> '사용자 /보기', '사용자/사용자 이름 : \ S +>/업데이트'=> '사용자/업데이트', 즉 각 작업에 대해 하나의 규칙이 적용됩니까? 두 번째 규칙은 실제로 사용자 이름을 숨 깁니까? www.mydomain.com/user//update – confile

+0

사용자 지정 라우팅을 원한다면 두 규칙이 모두 필요하다고 생각합니다. 1로 결합하는 영리한 방법이있을 수 있지만 확실하지 않습니다. (사용자 지정 경로는 Yii의 성능을 저하시킵니다.) 두 번째 규칙에 오타를 만들었습니다. 두 번째 규칙에 대한 url은 사용자 이름을 숨기지 않습니다. 'www.mydomain.com/user/ /update'이어야합니다. –

0

전달하기 전에 ID를 암호화하는 것이 더 좋습니다. 그리고 거기에 도달하면 해독하십시오. 이러한 임의/암호화 된 ID를 생성하는 방법은 여러 가지가 있습니다. 보안을 강화하려면 '사용자'와 같은 이름을 지정하지 않아야합니다. 저것을 고치는 것을 시도하십시오. 당신이 요점을 가지고 있기를 바랍니다 ... :)

+0

암호화 된 ID의 예를 들어 줄 수 있습니까? – confile

+0

여기에 당신이 볼 수있는 몇 가지 예가 있습니다.> [Link] (http://php.net/manual/en/function.crypt.php). 또한 프로젝트 모델에서 자체 암호화 기능을 만들 수 있습니다. – neil

관련 문제