Mit*_*ani 10 spring spring-security spring-3
在spring security 3.0中,我们正在使用AuthenticationProcessingFilter类,我们使用的determineTargetUrl()方法是根据不同的角色返回url.
现在,我们正在转向spring security 3.1.0.RC3,我现在应该如何确定基于不同角色的url,因为AuthenticationProcessingFilter类已从新版本中删除.任何人都可以请给我一些简短的代码,以便我可以实现自定义过滤器重定向到不同角色的不同页面.
Rob*_*nch 22
根据角色确定目标URL的最佳方法是在Spring Security配置中指定目标URL,如下所示.这将在Spring 3.0或3.1中运行
<http>
...
<form-login login-page="/login" default-target-url="/default"/>
</http>
Run Code Online (Sandbox Code Playgroud)
然后创建一个处理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/inbox";
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法的优点是它没有与任何特定的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"/>
Run Code Online (Sandbox Code Playgroud)
我不建议这样做,因为它与Spring Security API绑定,最好在可能的情况下避免这种情况.
| 归档时间: |
|
| 查看次数: |
7149 次 |
| 最近记录: |