登录验证机制的spring实现


//数据库操作,根据登录信息查找用户,返回Principal对象。
interface AuthenticationProvider {
public Principal authenticate(Verifier verifier) throws AuthenticationException;
public Principal get(Serializable id);
};
class TaobaoLoginAuthenticationProvider {
....
}

interface Principal {
public Serializable getIdentity();
public String getName();
public Long getLastLoginSeconds();
public boolean isAvailable();
};
class User implements Principal {
}

//登录授权完整操作
interface IdentityValidator {
....
};
//主要操作是读写Cookie
abstract class CookieIdentityValidator {
boolean login(Verifier verifier);
abstract Cookie createVisitorCookie(String registerName);
abstract Cookie createPrincipalCookie(Principal principal);
}
class CookieIdentityValidatorImpl {
Principal currentPrincipal();
void logout();
....
}

//登录信息包装器
interface verifier;
class PasswordVerifier {
String name;
String password;
}


web.xml(applicationContext.xml)中配置过滤器
<bean id="cookieIdentityValidator" class="com.winxuan.framework.validator.impl.CookieIdentityValidator" abstract="true"/>
<bean id="identityValidator" class="com.winxuan.framework.validator.impl.CookieIdentityValidatorImpl" parent="cookieIdentityValidator">
<property name="authenticationProvider" ref="loginAuthenticationProvider"/>
<property name="visitorTarget" value="www-franchisee-cv"/>
<property name="principalTarget" value="www-franchisee-cp"/>
<property name="domain" value=".franchisee.winxuan.com"/>
</bean>

<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.winxuan.franchisee.support.web.filter.LoginFilter</filter-class>
</filter>

以上配置声明了验证的核心类CookieIdentityValidatorImpl.java,并注入相关属性值。可在LoginFilter.java中声明变量IdentityValidator,进行登录验证实现。

验证主流程如下:
首先在LoginFilter.java中验证用户是否登录,identityValidator.isLogined();
用户登录,identityValidator.login(new PasswordVerifier(loginForm.getName(), loginForm.getPassword())),该方法中包含AuthenticationProvider.authenticate(verify).
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值