SpringSecurity2中的编程登录

SpringSecurity2中的编程登录,spring,authentication,spring-security,Spring,Authentication,Spring Security,我试图找到一种方法,当用户点击他通过电子邮件收到的“激活帐户”链接时,跳过登录表单。此链接包含一个可用作身份验证方法的一次性随机令牌 通过这个令牌,我可以检索用户详细信息并激活其帐户,但我还没有找到一种以编程方式登录的方法 我正在寻找一种方法来实现如下内容: <bean id="tokenAuth" class="...TokenAuthFilter" > <security:custom-filter position="PRE_AUTH_FILTER" /> &

我试图找到一种方法,当用户点击他通过电子邮件收到的“激活帐户”链接时,跳过登录表单。此链接包含一个可用作身份验证方法的一次性随机令牌

通过这个令牌,我可以检索用户详细信息并激活其帐户,但我还没有找到一种以编程方式登录的方法

我正在寻找一种方法来实现如下内容:

<bean id="tokenAuth" class="...TokenAuthFilter" >
   <security:custom-filter position="PRE_AUTH_FILTER" />
</bean>
void forceLogin(字符串用户名)

可能吗

我的spring安全配置如下:

<http>
<intercept-url pattern="/userAccount/logout.do" access="ROLE_USER"/>
... (More intercepts)

<form-login login-page="/userAccount/login.do"
  authentication-failure-url="/userAccount/login.do?failure=true"
  login-processing-url="/userAccount/j_spring_security_check.do"
  always-use-default-target="false"
  default-target-url="/userAccount/redirectAfterLogin.do"
  />

<anonymous />
<logout logout-url="/userAccount/logout.do" />
</http>

... (更多截获)

听起来你应该自己写

我将对
AbstractPreAuthenticatedProcessingFilter
进行子类划分,如下所示:

public class TokenAuthFilter extends AbstractPreAuthenticatedProcessingFilter {

   protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
      String token = request.getAttribute("customToken");
      //... look up user details based on this token
     String username = UserDao.getUserbyToken(token);
     return username;
   }

}
然后在Spring安全配置XML中添加如下行:

<bean id="tokenAuth" class="...TokenAuthFilter" >
   <security:custom-filter position="PRE_AUTH_FILTER" />
</bean>

虽然没有100%完成,但应该可以开始了。

元素似乎已经完成。显然,在Spring3.0中,这是一个向后不兼容的变化。。。