私はSpring MVC、Tiles、Shiroを使用しています。ShiroはunauthorizedUrlにリダイレクトされず、無効なログインになります - Shiro with Spring and Tiles
は、これは私のunauthorizedUrlプロパティが設定されている方法です。 <property name="unauthorizedUrl" value="/unauthorized"/>
私の期待はMyAuthorizingRealm
が無効な資格情報を発見したとき、史郎が/unauthorized
にリダイレクトすることということです。
しかし、フォーム提出ではそれは起こりません。 /login
のGETアクションとPOSTアクションを処理するためにマップされているログイン@Controller
があります。 URL /lists
へのアクセスには、ログインフォームが表示されます。だから、あるケースでは動作するように見えるが、他のケースでは動作しないようだ。
@Controller
@RequestMapping(value = "/login")
public class LoginController {
@RequestMapping(method = RequestMethod.GET)
public String getLoginFormView(Model model) {
return "login";
}
// if this method doesn't exist a Post not supported exception is thrown
@RequestMapping(method = RequestMethod.POST)
public String handlePost() {
return "this view doesn't exist";
}
}
私はMyAuthorizingRealm.doGetAuthenticationInfo()
からAuthenticationException
を投げたとしても、私はまだ史郎/unauthorized
にリダイレクトすることができません。常にフィルタチェーンを終了し、@Controller
のPOSTメソッドを実行します。もちろん私はリダイレクトを期待しています。ここ http://pastebin.com/XZaCKqEC
され、私のweb.xml
: http://pastebin.com/5H81Tm8A
史郎からいくつかのトレースログ出力がされた後
は、ここに私のwebapp-context.xml
です。 Shiroは/lists
にアクセスしようとすると動作します。しかし、ログインフォームが送信されると、/unauthorized
へのリダイレクトは起こりません。注意、ログイン提出が検出された: http://pastebin.com/ZEK3CTdJ
ので、ログインの提出が検出されたが、元のフィルタ・チェーンではなく、私は困惑/unauthorized
にリダイレクトをとにかく実行されます。どんな助けでも多くのおかげです。さらに詳しい情報が必要なら私に知らせてください。
1)のSecurityManager は、レルムで構成されて表示されませんあなたの春のXMLのためのあなたのペーストビン:
申し訳ありませんが、私のセキュリティマネージャは、私の設定です。私はちょうどポストから何とかそれを省いた。 Shiroと一緒にSpring MVCの機能を同時に使用することはできないと言っているようです。言い換えれば、FormAuthenticationFilterとSpring MVCをタイルで同時に使用したいと思います。 FormAuthenticationFilterを使用している場合は、MVCフレームワークからかなりの機能を失うので、MVCコントローラーで実行できないと言っています。その場合、おそらく私はパススルーフィルタを使用し、ハンドルのログイン手順を自分で行う必要があります。 –
また、あなたのフィードバックのおかげで本当に感謝しています。 –