栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

具有重定向到登录页面的AccessDeniedHandler

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

具有重定向到登录页面的AccessDeniedHandler

当已经有另一个用户登录时,我尝试登录一个新用户。它可以正常工作-无需注销第一个用户。他的授权被新的授权所代替。这是对我自己问题的简单答案。

如果有人感兴趣,在访问被拒绝的情况下如何转发登录页面-这是我的解决方案:

首先定义一个自定义的RequestCache:

@Component("myRequestCache")public class MyRequestCache extends HttpSessionRequestCache {    public MyRequestCache() {        super();    }}

第二个定义自定义AccessDeniedHandler:

@Component("myAccessDeniedHandler")public class MyAccessDeniedHandler implements AccessDeniedHandler {    @Autowired    @Qualifier("myRequestCache")    private RequestCache myRequestCache;    public MyAccessDeniedHandler() {    }    @Override    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException exc)        throws IOException, ServletException {        if (!response.isCommitted()) { //Save Target-Request shopRequestCache.saveRequest(request, response); //Forward to the login page request.getRequestDispatcher("/loginPage").forward(request, response);        }    }   }

第三,将这两个配置为Spring Security:

@Configuration@EnableWebSecuritypublic class myConfig extends WebSecurityConfigurerAdapter {    @Autowired    @Qualifier("myRequestCache")    RequestCache myRequestCache;    @Autowired    @Qualifier("myAccessDeniedHandler")    AccessDeniedHandler myAccessDeniedHandler;    @Override    protected void configure(HttpSecurity http) throws Exception {        http        .requestCache() .requestCache(myRequestCache) .and()        .exceptionHandling() .accessDeniedHandler(myAccessDeniedHandler)    }}

这是怎么回事
如果是,则

MyAccessDeniedHandler
转发
AccessDeniedException
到登录页面。由于此前进是由此自编程类而非过滤链中的Spring调用的,因此我们必须告诉spring目标请求是什么-
成功身份验证后目标重定向到的位置。这是通过
RequestCache



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号