我继续寻求处理java restlet服务器。
我能够根据需要设置我的路由,特别是有一个User资源可以通过URL上的POST调用创建。发生这种情况时,会在数据库上创建一个新用户。
从这一点开始,我希望新用户能够进行身份验证。问题是入站根中的身份验证器在开头加载一次用户名和密码。因此,如果创建了新用户,除非我重新启动服务器,否则他无法进行身份验证。
必须有一种简单的方法来解决这个问题!
这是申请表:
public class APIServerApplication extends Application {
@Override
public Restlet createInboundRoot(){
//some routers and filter..
//here the verifier is initialized with the current users and passwords:
MapVerifier verifier = new MapVerifier();
//get users and pwd from DB
HashMap<String,String> usrPwdMap = SomeDBClass.getVerifierMap();
for(String uname : usrPwdMap.keySet()){
verifier.getLocalSecrets().put(uname, (usrPwdMap.get(uname)).toCharArray());
}
//..verifier is used to build the authenticator... etc
}
用户资源类似于:
public class UserResource extends ServerResource{
@Post
public Representation acceptItem(Representation entity) {
//get the data from the form
//insert the new user in the db
/* TODO: I think i should add something here
to refresh the verifier map!
*/
}
}
如何刷新验证程序地图?
答案 0 :(得分:0)
这是在生产应用程序中执行操作的一种不正确的方式。切勿在内存中加载用户名/密码组合。这太过分了。
实际上,请修改您的应用程序,以便针对每个http请求中针对该用户的数据库中存储的用户名/密码进行检查。这是做事的宁静方式。如果您认为这不是一种好的做事方式,我建议您阅读这个问题的答案:RESTful authentication - resulting poor performance on high load?