2012-03-22 96 views
2
  1. 我使用自己的MVC实现,我不确定Spring安全性是否不是专门为Spring MVC实现而设计的。使用它还可以吗?无弹簧MVC定制的Spring安全性

  2. 我不清楚,我应该使用哪些Spring Security的哪些部分,哪些不需要。我想我不需要URL过滤器,因为我需要在我的控制器中专门验证访问URL参数(例如,检查用户文章的所有者)。喜欢的东西:

    if (request.getUser().isAllowedTo("EditArticle", 27)) {...} 
    if (request.getUser().isAllowedTo("CategoryManager", 123)) {...} 
    if (request.getUser().isInRole("Admin")) {...} 
    
  3. 我找不到用户的一些明确的方式输入/输出记录程序。我已经实现了我的UserDetailsUserDetailsService类来处理使用JPA的用户,但我没有看到办法,我可以如何在我的控制器中进行登录和注销。

编辑:

我不明白的方式如何把我的Freemarker模板<form> - 创建我发现窗体的唯一方法是:

<http pattern="/login.htm*" security="none"/> 
    <form-login login-page="/login.htm" default-target-url="/home.htm"/> 
</http> 

如何我可以配置登录表单的结构吗?我可以自己创建吗?

我想的最多的是能够通过我自己(例如与DWR)来处理登录,而不是使用魔法j_security_checks ...

这将是巨大的,如果我能处理由本人登录请求,并要求身份验证服务通过自己登录的用户(所以我可以很容易地使用直接Web远程(DWR)):

if (user.username.ok() and user.password.ok()) { 
    authService.setUser(user); 
    authService.setLoggedIn(true); 
} 

回答

3
  1. 春季安全不限于Spring MVC和可与您自己的框架实现一起使用。它为认证和会话管理提供方便的服务。

  2. Spring使用非常方便利用某些URL访问,但不限于此。您将能够从Spring上下文中获取当前用户拥有的角色以及您在UserDetails对象中包含的所有自定义信息。有很多方法可以限制某些角色对特定操作的访问。然而,像if (request.getUser().isAllowedTo("EditArticle", 27)) {...}这样的代码我认为它会更简单,自己检查。

  3. 登录和注销是通过调用特定的URL完成的。对于登录:/ j_spring_security_check。对于注销:/ j_spring_security_logout。