2014-11-17 29 views
0

我開發的,我有映射到/account/{id}/...控制器的應用程序,我的目標是讓一些客戶使用這些網址僅供用戶,其用戶訪問「 ID「存在於數據庫中。彈簧安置 - /帳號/(編號) - 僅適用於誰存在於數據庫

過程看起來像這樣:

1)客戶端創建新帳戶(新用戶被添加到數據庫系統自動產生的ID)

3)客戶端2)客戶端登錄可以訪問例如:/account/{id}/something

現在我有我的控制器這樣映射:

@RestController 
@RequestMapping(value = "/account/{id}") 
public class ControllerName { 

但是在每個控制器的方法中,我正在檢查是否存在調用我的服務的用戶(通過檢查ID是否存在)。 我想,這是不好的(有問題),因爲相同的碼重複多次。

有什麼辦法,以避免重複自己和它的Automize?或者這是檢查用戶是否存在服務呼叫的好方法?

回答

1

我想你可以寫攔截器或過濾它,像下面。

<mvc:interceptors> 
    <mvc:interceptor> 
     <mvc:mapping path="/controller1/path1"/> 
     <mvc:mapping path="/controller2/path2"/> 
     //other controller path 
     <bean class="com.test.interceptor.UserInterceptor" /> 
    </mvc:interceptor> 
    </mvc:interceptors> 

然後在這個攔截器中,你可以驗證用戶的存在。

public class UserInterceptor extends HandlerInterceptorAdapter { 
    //Inside prehandle() method you can verify user existence 
} 

同樣,如果你想,你可以使用過濾器。

+0

我想過這個問題爲好,但我不知道這是好主意。我做了5分鐘前,但刪除,因爲我認爲這是羅嗦。 – azalut