2016-11-03 16 views
0

私は、SpringブートWebアプリケーションのフィルタを使用して、すべてのユーザー要求をデータベースに記録しています。私がログインしたいことの一つは、ユーザー名ですが、私が使用して現在のユーザーを取得しようとすると:私は次のエラーを取得フィルタでApache Shiro SecurityUtilsを使用する

SecurityUtils.getSubject().getPrincipal() 

No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton. This is an invalid application configuration. 

を私はする必要がありますか私のフィルターが現在のユーザーを取得できるようにしますか?あなたのフィルタマッピングに定義された少なくとも1つのURL持っている必要があります

+0

shiro環境が正常に起動しましたか? shiro.iniファイルを共有してください。 – dev

答えて

2

:(私はあなたが既に持って推測しているもの)

https://github.com/apache/shiro/blob/1.4.x/samples/spring-boot-web/src/main/java/org/apache/shiro/examples/WebApp.java#L96-L101

をそしてもちろん史郎サーブレットフィルタが設定さは、見てみましょう上記の例。

+0

URLが設定されたAbstractShiroFilterを返すコンフィグレーションBeanがあります。しかし、ユーザーを記録するために使用しているフィルタはShiroFilterではありません。それは必要ですか?アプリケーション内のどこにでもSecurityUtilsにアクセスできると思いましたか? –

+0

Shiroフィルタを独自のフィルタの前に置くだけで、すべての設定を行う必要があります。 –

+0

Shiroフィルターをフィルターの前に置くとどういう意味ですか?私のフィルターの前にShiroフィルターを実行する必要があるのですか、それともShiroにフィルターを入れる必要があるのですか?前者の場合、Shiroフィルタの順序を変更するにはどうすればよいですか? –

関連する問題