下面是我的web.xml文件,其中包含对Web服务的身份验证。
<sec:authentication-manager>
<sec:authentication-provider>
<sec:user-service id="userService">
<sec:user name="admin" password="admin" authorities="admin" />
<sec:user name="report" password="report" authorities="customer" />
<sec:user name="johndoe" password="password" authorities="customer, admin" />
</sec:user-service>
</sec:authentication-provider>
</sec:authentication-manager>
<sec:http create-session="stateless" use-expressions="true" path-type="regex">
<sec:intercept-url pattern="/services.*" access="permitAll" />
<sec:intercept-url pattern="/services/fichier.*" access="hasRole('customer')" />
<sec:intercept-url pattern="/services.*" access="hasRole('admin')" />
<sec:http-basic />
</sec:http>
现在我指定了一个用户 - report
,其中有一个角色 - customer
。该用户只能访问fichier下的服务。淅沥是/services/fichier.*
。
以下是具体方法: -
@PreAuthorize("hasRole('customer')")
@GET
@Path("/downloadFile/{fileName}/")
public String downloadFile(@PathParam("fileName") String fileName, @QueryParam("fileId") Integer fileId)
{
return "blah blah blah"
}
现在我的网址是 - http://localhost:8080/AutoFIE2Web/services/fichier/downloadFile/ffffff.jpg?fileId=5
我使用了report
用户,它为我提供了拒绝访问权限的异常,但它确实与其他两位用户合作 - admin
,johndoe
。
此身份验证有什么问题?
由于
答案 0 :(得分:0)
<sec:http create-session="stateless" use-expressions="true" path-type="regex">
<!-- <sec:intercept-url pattern="/services.*" access="permitAll" /> -->
<sec:intercept-url pattern="/services/fichier.*" access="hasRole('customer')" />
<sec:intercept-url pattern="/services.*" access="hasRole('admin')" />
<sec:http-basic />
</sec:http>
删除permitAll
访问权限后,工作正常。