加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 01:30:45 所属栏目:大数据 来源:网络整理
导读:在我的Spring MVC Web应用程序中,只有具有足够权限的用户才能访问某些区域.我需要能够允许用户以不同的用户身份登录才能使用这些页面(有点像覆盖),而不仅仅是“拒绝访问”消息. 如何使用Spring Security执行此操作? 这是我期待的流程,更详细一点: 用户A从

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

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

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

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

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

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

这是我的spring安全配置文件:


我正在使用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>.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读