Restlet - 如何在创建新用户后更新authenticator验证程序映射?

时间:2014-02-19 15:22:38

标签: restlet restful-authentication restlet-2.0

我继续寻求处理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! 
              */
       }
 }

如何刷新验证程序地图?

1 个答案:

答案 0 :(得分:0)

这是在生产应用程序中执行操作的一种不正确的方式。切勿在内存中加载用户名/密码组合。这太过分了。

实际上,请修改您的应用程序,以便针对每个http请求中针对该用户的数据库中存储的用户名/密码进行检查。这是做事的宁静方式。如果您认为这不是一种好的做事方式,我建议您阅读这个问题的答案:RESTful authentication - resulting poor performance on high load?