您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

根据Spring Security 3.1中的角色确定目标URL

根据Spring Security 3.1中的角色确定目标URL

根据角色确定目标URL的最佳方法是在Spring Security配置中指定目标URL,如下所示。这将在Spring 3.0或3.1中运行

<http>
    ... 
    <form-login login-page="/login" default-target-url="/default"/>
</http>

然后创建一个处理default-target-url的控制器。控制器应根据侧滚进行重定向或转发。下面是使用Spring MVC的示例,但是任何类型的控制器都可以使用(例如Struts,Servlet等)。

@Controller
public class DefaultController {
    @RequestMapping("/default")
    public String defaultAfterLogin(HttpServletRequest request) {
        if (request.isUserInRole("ROLE_ADMIN")) {
            return "redirect:/users/sessions";
        }
        return "redirect:/messages/in@R_817_2419@";
    }
}

这种方法的优点是它不与任何特定的Security实现耦合,不与任何特定的MVC实现耦合,并且可以与Spring Security命名空间配置一起轻松使用。完整的示例可以在我今年在SpringOne上提出的SecureMail项目中找到。

另一种选择是你可以创建一个自定义AuthenticationSuccessHandler。该实现可能扩展SavedRequestAwareAuthenticationSuccessHandler,它是认的AuthenticationSuccessHandler。然后可以使用命名空间将其连接,如下所示。

<sec:http>
    <sec:form-login authentication-success-handler-ref="authSuccessHandler"/>
</sec:http>
<bean:bean class="example.MyCustomAuthenticationSuccessHandler"/>

我不建议这样做,因为它与Spring Security API有关,最好在可能的情况下避免这样做。

Java 2022/1/1 18:14:46 有623人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶