当前位置: 首页 > 知识库问答 >
问题:

限制拖放管理页面

莫欣悦
2023-03-14

如何验证Dropwizard管理门户,以限制普通用户访问它?请帮忙

共有3个答案

朱淮晨
2023-03-14

较新的Jetty版本没有< code>MappedLoginService,所以@Kamil的回答不再有效。我已经修改了他们的答案,以便从drowizard 1 . 2 . 2开始运行:

public class AdminConstraintSecurityHandler extends ConstraintSecurityHandler {

    private static final String ADMIN_ROLE = "admin";

    public AdminConstraintSecurityHandler(final String userName, final String password) {
        final Constraint constraint = new Constraint(Constraint.__BASIC_AUTH, ADMIN_ROLE);
        constraint.setAuthenticate(true);
        constraint.setRoles(new String[]{ADMIN_ROLE});
        final ConstraintMapping cm = new ConstraintMapping();
        cm.setConstraint(constraint);
        cm.setPathSpec("/*");
        setAuthenticator(new BasicAuthenticator());
        addConstraintMapping(cm);
        setLoginService(new AdminLoginService(userName, password));
    }

    public class AdminLoginService extends AbstractLoginService {

        private final UserPrincipal adminPrincipal;
        private final String adminUserName;

        public AdminLoginService(final String userName, final String password) {
            this.adminUserName = Objects.requireNonNull(userName);
            this.adminPrincipal = new UserPrincipal(userName, new Password(Objects.requireNonNull(password)));
        }


        @Override
        protected String[] loadRoleInfo(final UserPrincipal principal) {
            if (adminUserName.equals(principal.getName())) {
                return new String[]{ADMIN_ROLE};
            }
            return new String[0];
        }

        @Override
        protected UserPrincipal loadUserInfo(final String userName) {
            return adminUserName.equals(userName) ? adminPrincipal : null;
        }
    }
}
洪昊然
2023-03-14

对于 DW 0.7,我的方法是:

public class AdminConstraintSecurityHandler extends ConstraintSecurityHandler {

    private static final String ADMIN_ROLE = "admin";

    public AdminConstraintSecurityHandler(final String userName, final String password) {
        final Constraint constraint = new Constraint(Constraint.__BASIC_AUTH, ADMIN_ROLE);
        constraint.setAuthenticate(true);
        constraint.setRoles(new String[]{ADMIN_ROLE});
        final ConstraintMapping cm = new ConstraintMapping();
        cm.setConstraint(constraint);
        cm.setPathSpec("/*");
        setAuthenticator(new BasicAuthenticator());
        addConstraintMapping(cm);
        setLoginService(new AdminMappedLoginService(userName, password, ADMIN_ROLE));
    }
}

public class AdminMappedLoginService extends MappedLoginService {

    public AdminMappedLoginService(final String userName, final String password, final String role) {
        putUser(userName, new Password(password), new String[]{role});
    }

    @Override
    public String getName() {
        return "Hello";
    }

    @Override
    protected UserIdentity loadUser(final String username) {
        return null;
    }

    @Override
    protected void loadUsers() throws IOException {
    }
}

并且以如下方式使用它们:

environment.admin().setSecurityHandler(new AdminConstraintSecurityHandler(...))
沈骞仕
2023-03-14

在您的配置中,您可以在http下设置管理员用户名管理员密码,如下所示:

http:
  adminUsername: user1234
  adminPassword: pass5678
 类似资料:
  • 最近从Laravel 6升级到Laravel 7,我遇到的问题是,当我使用url /admin它应该重定向到管理员登录页面这也适用于管理员限制页面,如果用户没有登录。我不确定是否需要更改web.php文件或登录控制器中的路由。 登录控制器

  • 本文向大家介绍PyQt-布局管理-1(使用QtDesigner拖放),包括了PyQt-布局管理-1(使用QtDesigner拖放)的使用技巧和注意事项,需要的朋友参考一下 版面 这意味着用于布置视觉元素的工具。换句话说,这是您工作的总体规划或蓝图。Qt设计器提供了多种布局: 调整大小:您可以在此布局中自由调整元素或小部件。在大多数情况下,这是您首次在小部件区域中插入布局时的默认布局。 盒子布局 水

  • 该类被用于提供一个拖放交互。 代码示例 const controls = new DragControls( objects, camera, renderer.domElement ); // add event listener to highlight dragged objects controls.addEventListener( 'dragstart', function ( eve

  • 在本节中,您将学习如何在Selenium WebDriver中执行像拖放这样的复杂操作。 在继续本节之前,先了解一些有关拖放操作的概念。 Selenium WebDriver拖放操作 要执行复杂的用户交互,例如拖放,在Selenium WebDriver中有一个类。 使用类,首先构建一系列复合事件,然后使用Action(一个代表单个用户交互的接口)执行它。 在这里使用的类的一些方法是 - - 单击

  • SonataUserBundle SonataUserBundle是sonata项目中有关用户管理的部分,它其实是集成了FOS/UserBundle组件(感兴趣可以去git上找,但个人觉得直接用SonataUserBundle就够了)并增添了一些功能,使用SonataUserBundle需要安装如下扩展,执行: [root@centos7vm mywebsite]# composer requi

  • 使用@angular/cdk/拖放模块(角度材质拖放)时。。。有没有办法限制drop容器只接受一个值而不是多个值?我试图创建一个表单,用户可以将图像拖放到只有一个项目的字段中。我使用标准示例代码来实现拖放| Angular Material,但无法找到可以限制拖放项目数量的解决方案,第二个无法找到保持拖放列表不变的解决方案(拖放项目将保留在拖放容器中),因此您可以复制项目,而不是将项目移动到拖放容