Spring REST - / account / {id} - 仅对数据库中存在的用户进行访问

时间:2014-11-17 12:27:00

标签: database spring rest authentication

我正在开发一个应用程序,其中我将控制器映射到/account/{id}/...,我的目的是让一些客户端仅将这些URL用于" id"存在于数据库中。

流程如下所示:

1)客户创建新帐户(新用户添加到具有自动生成ID的数据库)

2)客户登录

3)客户端可以访问例如:/account/{id}/something

目前我的控制器映射如下:

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

但是在每个控制器的方法中,我正在检查调用我的服务的用户是否存在于db中(通过检查ID是否存在)。 我认为它不好(有问题),因为同一代码重复多次。

有没有办法避免重复自己并自动化?或者这是检查用户是否存在于服务呼叫中的好方法吗?

1 个答案:

答案 0 :(得分: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
}

同样,如果需要,可以使用过滤器。