JHipster:允许匿名用户读取实体,但不更新?

我使用这些值生成了一个JHipster应用程序:

{ "generator-jhipster": { "jhipsterVersion": "3.1.0", "baseName": "app", "packageName": "my.app", "packageFolder": "my/app", "serverPort": "8080", "authenticationType": "session", "hibernateCache": "ehcache", "clusteredHttpSession": "no", "websocket": "no", "databaseType": "sql", "devDatabaseType": "h2Disk", "prodDatabaseType": "mysql", "searchEngine": "elasticsearch", "buildTool": "gradle", "enableSocialSignIn": false, "rememberMeKey": "", "useSass": true, "applicationType": "monolith", "testFrameworks": [], "jhiPrefix": "jhi", "enableTranslation": false } } 

我想允许匿名用户查看实体,但不允许更新或删除该实体。 我已经尝试编辑生成的SecurityConfiguration.java文件,以便在configure(HttpSecurity http)方法中为authorizeRequests()添加permitAll(HttpMethod.GET,"/**") 。 在尝试访问实体时,我仍然被定向到accessdenied

有人曾经解决过这个用例吗?

这适用于AngularJS 1.x.

用于访问资源:在configure(HttpSecurity http)方法中的SecurityConfiguration.java

  .and() .authorizeRequests() .antMatchers(HttpMethod.GET, "/api/**").permitAll() 

要访问角度视图/状态:对于每个实体,注释掉或删除只读状态的authorities属性。 下面是src/main/webapp/app/entities/book/book.state.js Book实体的示例:

  .state('book', { parent: 'entity', url: '/book', data: { // authorities: ['ROLE_USER'], pageTitle: 'monoApp.book.home.title' }, .... }) .state('book-detail', { parent: 'entity', url: '/book/{id}', data: { // authorities: ['ROLE_USER'], pageTitle: 'monoApp.book.detail.title' }, 

但是,要注意两件事:

  • 通过在SecurityConfiguration使用此类模式,您还可以在/api/users公开您的/api/users 。 为每个实体添加permitAll()会更安全,这样您就可以完全控制您公开的内容(白名单方法)
  • 用户体验很差,因为您仍然会显示用于添加或删除实体的按钮。 所以你可以用ng-hide隐藏它们