前一篇虽然能够实现验证用户名与密码。但是过于死板,是将用户名与密码直接定义在代码中。 不够灵活。
现在使用自定义SecretVerifier来进行验证。
第一步:定义验证器
/**
* 自定义的校验器
*/
public class MySecretVerifier extends SecretVerifier{
@Override
public int verify(String identifier, char[] secret) {
System.out.printf("username:%s password:%s%n" , identifier , new String(secret) );
/**
* 此处自定义的验证规则为:如果用户名不为空,并且用户名和密码相等则通过。否则不通过
*/
if(identifier == null || identifier.equals("")){
return SecretVerifier.RESULT_INVALID ;
}else if(identifier.equals( new String(secret) )){
return SecretVerifier.RESULT_VALID ;
}else{
return SecretVerifier.RESULT_INVALID ;
}
}
}
第二步:配置MovieApplication
public class MovieApplication extends Application{
/**
* 注意:Router 与 ChallengeAuthenticator 均是Restlet的子类
*/
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
//绑定资源
router.attach("/" , MovieServerResource.class);
//创建认真器
ChallengeAuthenticator authenticator = new ChallengeAuthenticator(getContext(), ChallengeScheme.HTTP_BASIC,
"Movie Realm");
//使用自定义的验证器
authenticator.setVerifier(new MySecretVerifier());
//将路由器放在认证器之后
authenticator.setNext(router);
//返回认证器
return authenticator ;
}
}
其他内容与上一篇博客一样。http://blog.csdn.net/is_zhoufeng/article/details/9792029