REST URL的intercept-url模式

时间:2017-05-04 03:45:37

标签: rest spring-security

我正在设计一组用于访问URL的REST API。根据我的要求,有两个网址:

http://localhost:3126/securitydemo/webapi/db/students 

查看所有学生无需访问权限和

http://localhost:3126/securitydemo/webapi/db/students/1 

仅允许ROLE_USER

我的Spring Security配置:

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="**/students/*" access="hasRole('ROLE_USER')" />
    <http-basic/>
</http>

如果我使用模式**/students/*,则不会发生基本安全弹出窗口。如果我使用/**它正常工作。

如何拦截具有不同安全级别的两个网址?

我的REST服务类:

@Path("/db")
@Produces(MediaType.APPLICATION_JSON)
public class StudentService {
    static StudentDao data = new StudentDaoImpl();
    @Path("/students")
    @GET
    public Response getStudents(){
        GenericEntity<List<Student>> entity = new GenericEntity<List<Student>>(data.getAllStudents()){};
        return  Response.ok(entity).build();
    }

    @Path("/students/{id}")
    @GET
    public Response getStudent(@PathParam("id") int id){
        return  Response.ok(data.getStudent(id)).build();
    }
}

1 个答案:

答案 0 :(得分:-2)

试试这个

asyncResponse.resume(
   Response.ok(stream, MediaType.APPLICATION_JSON)
   .cookie(new NewCookie("key","value")).build());