java – 如何允许用户使用Spring Security覆盖?

前端之家收集整理的这篇文章主要介绍了java – 如何允许用户使用Spring Security覆盖?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在我的Spring MVC Web应用程序中,只有具有足够权限的用户才能访问某些区域.我需要能够允许用户以不同的用户身份登录才能使用这些页面(有点像覆盖),而不仅仅是“拒绝访问”消息.

如何使用Spring Security执行此操作?

这是我期待的流程,更详细一点:

>用户A从外部应用程序进入页面X,并通过标头进行身份验证
>用户A无权使用页面X,因此被带到登录屏幕,并显示一条消息,表明他们必须以具有足够权限的用户身份登录才能使用此页面
>用户B登录并具有足够的特权,并被带到第X页.

注意:页面X有一个需要保留的大而长的查询字符串.

如何使用Spring Security执行此操作?

这是我的spring安全配置文件

logout logout-url="/logout" /> 

        

我正在使用Spring Security 3.1 Active Directory连接功能的略微修改版本.修改只是加载所有用户组,包括通过组嵌套到达的组,而不仅仅是用户直接成员的组.我还使用自定义用户对象,其中嵌入了我的应用程序的User对象,以及执行常规LDAP映射的自定义LDAP映射器,然后添加到我的用户中.

有一种特殊的身份验证方案尚未实现,其中用户根据以单点登录方式从外部应用程序(或通过Kerberos)传递的用户名进行身份验证.

最佳答案
你如何检查角色?

如果您在安全上下文中定义它们,如下所示:

您可以在SimpleUrlAuthenticationFailureHandler中设置defaultFailureUrl,当具有较少权限的用户尝试访问安全URL时,FaliureHandler应将您重定向到defaultFailureUrl,这可能是您的登录页面.

您可以在filter的FORM_LOGIN_FILTER位置注入FaliureHandler.

评论中回答1).

考虑到命名空间配置,这比我想象的要多一些.

您需要做的是删除< form-login>定义而不是添加’custom’UsernamePasswordAuthenticationFilter(这是处理< form-login>元素的过滤器).

您还需要删除< access-denied-handler>.

所以你的配置看起来像这样:

required properties,but you can read about them in the docs -->

如果你还没有,一般也看看spring docs on custom filters.我们目前在当前公司中使用此配置,如果页面上没有所需权限,则强制用户重新登录.

猜你在找的Spring相关文章