0
私はスプリングセキュリティに問題があります。私は3つのロール(ROLE_ADMIN、ROLE_MOD、ROLE_USER)を作成しました。パスワードとユーザー名を使ってデータベース内の役割を維持しています。 JSPでは、すべてのロールに対して3つの異なるメニューを作成しました。すべてのメニューには、 "/ messages"、 "/ profile"、 "/ logout"を繰り返す3行があります。 MODまたはUSERとしてログするとすべて正常に動作しますが、ADMINとしてログすると「/ messages」と「/ profile」にアクセスできなくなります。スプリングセキュリティ - ロールが正しく機能していない
私の設定やJSPで何が問題になっていますか?
セキュリティ設定:JSPの
@Override
protected void configure(HttpSecurity http) throws Exception {
//@formatter:off
http
.authorizeRequests()
.antMatchers("/"
,"/tutorials"
,"/search"
,"/about"
,"/contact"
,"/register",
"/css/*",
"/js/*",
"/img/*")
.permitAll()
.antMatchers(
"/messages",
"/profile",
"/logout",
"/newsmanager",
"/tutorialsmanager",
"/usersmanager",
"/sendemails"
)
.hasRole("ADMIN")
.antMatchers(
"/suggestnews",
"/suggesttutorial",
"/messages",
"/profile",
"/logout"
)
.hasRole("MOD")
.antMatchers(
"/messages",
"/profile",
"/logout"
)
.hasRole("USER")
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.permitAll();
//@formatter:on
}
フラグメント:
<sec:authorize access="hasRole('ROLE_ADMIN')">
<button class="btn btn-default dropdown-toggle" type="button"
id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="true">
Account <span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li><a href="/messages">Messages</a></li>
<li><a href="/profile">Profile</a></li>
<li role="separator" class="divider"></li>
<li><a href="/tutorialsmanager">Tutorials manager</a></li>
<li><a href="/newsmanager">News manager</a></li>
<li><a href="/usersmanager">Users manager</a></li>
<li><a href="/sendemails">Send emails</a></li>
<li role="separator" class="divider"></li>
<li><a href="javascript:$('#logoutForm').submit();">Log
out</a></li>
</ul>
</sec:authorize>
<!-- APPEARED FOR ROLE_USER -->
<sec:authorize access="hasRole('ROLE_USER')">
<button class="btn btn-default dropdown-toggle" type="button"
id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="true">
Account <span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu2">
<li><a href="/messages">Messages</a></li>
<li><a href="/profile">Profile</a></li>
<li role="separator" class="divider"></li>
<li><a href="javascript:$('#logoutForm').submit();">Log
out</a></li>
</ul>
</sec:authorize>
<!-- APPEARED FOR ROLE_MOD -->
<sec:authorize access="hasRole('ROLE_MOD')">
<button class="btn btn-default dropdown-toggle" type="button"
id="dropdownMenu3" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="true">
Account <span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu3">
<li><a href="/messages">Messages</a></li>
<li><a href="/profile">Profile</a></li>
<li role="separator" class="divider"></li>
<li><a href="/suggestnews">Suggest a news</a></li>
<li><a href="/suggesttutorial">Suggest a tutorial</a></li>
<li role="separator" class="divider"></li>
<li><a href="javascript:$('#logoutForm').submit();">Log
out</a></li>
</ul>
</sec:authorize>
'hasRole'は、' ROLE_'を前面からトリミングします。ある場所では「USER」を使用し、もう一方の場所では「ROLE_USER」を使用しています。 – chrylis
私はそれを変更しましたが、まだ働いていません。 – DEADALICE7000
コンソールログも共有できますか? –