Web Milton.io认证
我已经编写了一个小型grails Web应用程序。我正在使用milton.io通过webdav访问一些内容。 所以webdav仍然在工作,我可以放置、获取、删除文件,等等。 但现在我想添加身份验证和授权。问题是: 资源接口为我提供了两种方法:Web Milton.io认证,web,webdav,milton,Web,Webdav,Milton,我已经编写了一个小型grails Web应用程序。我正在使用milton.io通过webdav访问一些内容。 所以webdav仍然在工作,我可以放置、获取、删除文件,等等。 但现在我想添加身份验证和授权。问题是: 资源接口为我提供了两种方法: Object authenticate(String user, String password); boolean authorise(Request request, Request.Method method, Auth auth); 因此,我的资
Object authenticate(String user, String password);
boolean authorise(Request request, Request.Method method, Auth auth);
因此,我的资源类实现了资源接口,但框架从未调用方法authenticate。我必须自己实现Auth Basic吗
我对弥尔顿的了解非常贫乏。可能是我忘了什么,因为我的webdav客户端(例如cadaver)从不要求输入用户名/密码
谢谢你的帮助
彼得·韦弗
我的资源类的签名:
class SResource implements GetableResource, PropFindableResource, Resource, DeletableResource, MoveableResource, ReportableResource, CopyableResource
class SFileResource extends SResource implements ReplaceableResource
class SFolderResource extends SResource implements PutableResource, MakeCollectionableResource, CollectionResource
这是获取HttpManager的构建器
class SMiltonConfig implements MiltonConfigurator {
protected HttpManagerBuilder builder;
protected List<Initable> initables;
protected HttpManager httpManager;
public SMiltonConfig(){
try {
// Attempt to use Enterprise edition build if available
Class builderClass = Class.forName("io.milton.ent.config.HttpManagerBuilderEnt");
builder = (HttpManagerBuilder) builderClass.newInstance();
println ("load Ent. HTTP Manager")
} catch (InstantiationException ex) {
builder = new HttpManagerBuilder();
println ("load Std. HTTP Manager")
} catch (IllegalAccessException ex) {
println ("load Std. HTTP Manager")
builder = new HttpManagerBuilder();
} catch (ClassNotFoundException ex) {
println ("load Std. HTTP Manager")
builder = new HttpManagerBuilder();
}
}
@Override
public HttpManager configure(Config arg0) throws ServletException {
ResourceFactory rf = new SResourceFactory();
builder.setMainResourceFactory(rf);
checkAddInitable(initables, builder.getMainResourceFactory());
httpManager = builder.buildHttpManager();
for( Initable i : initables ) {
i.init(config, httpManager);
}
return httpManager;
}
@Override
public void shutdown() {
httpManager.shutdown()
for( Initable i : initables ) {
i.destroy(httpManager);
}
}
private void checkAddInitable(List<Initable> initables, Object o) {
if( o instanceof Initable) {
initables.add((Initable)o);
} else if( o instanceof List ) {
for( Object o2 : (List)o) {
checkAddInitable(initables, o2);
}
}
}
}
如果需要基本身份验证,则必须启用它。因此,将以下行添加到SMiltonConfig类的config方法中
builder.setEnableOptionsAuth(true); // enables auth
builder.setEnableBasicAuth(true); // optional
下面是资源授权方法的一个示例
@Override
public boolean authorise(Request r, Method m, Auth a) {
return a != null;
}
希望能有帮助
弗洛里安·普凡
@Override
public boolean authorise(Request r, Method m, Auth a) {
return a != null;
}