Angularjs 拦截url不';不能与spring security一起工作

Angularjs 拦截url不';不能与spring security一起工作,angularjs,spring,spring-security,Angularjs,Spring,Spring Security,我正在尝试管理用户身份验证,我的配置为: <security:intercept-url pattern="/**" access="isAuthenticated() and hasRole('ROLE_ADMIN')" /> <security:intercept-url pattern="/public/**" access="isAuthenticated() and hasRole('ROLE_USER')" /> 我的

我正在尝试管理用户身份验证,我的配置为:

<security:intercept-url pattern="/**" access="isAuthenticated() and hasRole('ROLE_ADMIN')" />
                  <security:intercept-url pattern="/public/**" access="isAuthenticated() and hasRole('ROLE_USER')" />


我的问题是只有管理员可以登录,但其他人我收到此消息“Etat HTTP 403-访问被拒绝”此问题有任何解决方案吗?

这里的问题是第一条规则限制太多,并且在所有url Spring安全检查中,是否用户具有角色\u admin。现在我不知道你的安全要求是什么,但是考虑到在你的案例中停止评估的第一条规则,首先停止过滤你的请求,拒绝其他用户的调用。 您可以这样尝试:

<security:intercept-url pattern="/public/**" access="hasRole('ROLE_USER')" />
<security:intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')" />

在本例中,您说公共url具有用户具有用户角色的安全要求,如果此要求不正确,您将评估是否为管理员,第二条规则

如果您注意到我删除了isAuthenticated(),在这种情况下,我只检查登录用户的角色


我希望这可以帮助您

这里的问题是第一条规则限制太多,并且在所有url中,都会检查用户是否具有角色\u ADMIN。现在我不知道你的安全要求是什么,但是考虑到在你的案例中停止评估的第一条规则,首先停止过滤你的请求,拒绝其他用户的调用。 您可以这样尝试:

<security:intercept-url pattern="/public/**" access="hasRole('ROLE_USER')" />
<security:intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')" />

在本例中,您说公共url具有用户具有用户角色的安全要求,如果此要求不正确,您将评估是否为管理员,第二条规则

如果您注意到我删除了isAuthenticated(),在这种情况下,我只检查登录用户的角色


我希望这能帮助您

指定安全规则的顺序就是查阅规则的顺序。。。因此,
/**
应该始终是最后一个,而不是第一个。感谢您的回答,我更改了顺序,但用户无法加入文件夹“public”下的视图。他们是否登录?您目前已经保护了所有内容,而且您的规则有点多余,
hasRole
意味着某人已通过
身份验证
,否则他没有该规则。他们尚未登录,我正在尝试筛选用户重定向指定安全规则的顺序是查阅规则的顺序。。。因此,
/**
应该始终是最后一个,而不是第一个。感谢您的回答,我更改了顺序,但用户无法加入文件夹“public”下的视图。他们是否登录?你现在已经保护了所有的东西,而且你的规则有点多余,
hasRole
意味着有人通过了
身份验证
,否则他没有这个规则。他们还没有登录,我正在尝试过滤用户重定向。我更改了我的代码,但不起作用,我认为这是由angularjs造成的,由于angularjs与“#”一起工作,但我不知道如何解决这一问题。这是我与spring Security一起使用angularjs的一个问题,对我来说,所有这些都可以正常工作。因此,请告诉我“public”应该是我的观点的文件夹或者应该是在角度服务中使用的路径公共应该在路径中使用但是我在因特网上搜索并且我认为你可以阅读ahttps://spring.io/guides/tutorials/spring-security-and-angular-js/. 我不知道你们的应用程序的所有细节,但我使用了Thymeleaf和angular,这是我的开源项目,若你们愿意,可以阅读ispiration的代码。我更改了我的代码,但它不起作用,我认为这是由angularjs引起的,因为angularjs与“#”一起工作,但我不知道如何解决它。我使用angularjs与spring Security配合使用,对我来说都能正常工作。所以请告诉我是否“public”应该是我的观点的文件夹或者应该是在角度服务中使用的路径公共应该在路径中使用但是我在因特网上搜索并且我认为你可以阅读ahttps://spring.io/guides/tutorials/spring-security-and-angular-js/. 我不知道你们的应用程序的所有细节,但我使用了Thymeleaf和angular,这是我的开源项目,若你们愿意,可以阅读ispiration的代码。