代码之家  ›  专栏  ›  技术社区  ›  Manolo Santos

Spring Security 2中的编程登录

  •  2
  • Manolo Santos  · 技术社区  · 16 年前

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

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

    我正在寻找一种方法来实现这样的功能:

    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>
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   Gandalf    16 年前

    听起来你应该自己写 PreAuthenticationFilter .

    我将把 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%完成,但应该可以开始。