3

フォームベース認証の実装に問題があります。簡単な Web アプリケーションを作成しました。ページ (/jsp/index.jsp) を開く前に、ユーザーの権限を確認し、必要に応じてログイン ページを開きたいと考えています。

残念ながら、index.jsp のリンク ( http://localhost:8080/mywebapp/jsp/index.jsp )を開こうとすると、index.jsp がすぐに表示されますが、最初に login.jsp が表示されることを期待していました。重要なファイルは次のとおりです。

Shiro.ini

[main]
# specify login page
authc.loginUrl = /login.jsp
# name of request parameter with username; if not present filter assumes 'username'
authc.usernameParam = user
# name of request parameter with password; if not present filter assumes 'password'
authc.passwordParam = passw
# does the user wish to be remembered?; if not present filter assumes 'rememberMe'
authc.rememberMeParam = remember
[url]
# enable authc filter for all application pages
/jsp/** = authc
[users]
adminstrator=throttling,Administrator

web.xml

<web-app id="starter" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <listener>
        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>ShiroFilter</filter-name>
        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ShiroFilter</filter-name>
        <url-pattern>/*</url-pattern>
        </filter-mapping>
</web-app>

これはmavenプロジェクト/ src / mainのディレクトリ構造です

├───java
├───resources
│       log4j.properties
│       Shiro.ini
│
└───webapp
    │   login.jsp
    │
    ├───jsp
    │       index.jsp
    │
    └───WEB-INF
        │   web.xml
        │
        └───lib

これら2つの依存関係を pom.xml に追加しました

    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-web</artifactId>
      <version>1.2.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-core</artifactId>
      <version>1.2.1</version>
    </dependency>

うまくいけば、私は重要な情報を書きました!なぜそれがうまくいかないのか、誰か助けてもらえますか?ありがとう、V.

log4j.properties

log4j.rootLogger=TRACE, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%c]: %m%n
log4j.logger.net.sf.ehcache=WARN
log4j.logger.org.apache=WARN
log4j.logger.org.quartz=WARN
log4j.logger.org.apache.shiro=TRACE
log4j.logger.org.apache.shiro.util.ThreadContext=INFO
4

2 に答える 2

1

申し訳ありませんが、shiro.ini を間違えました。[urls] ではなく [url] と書きました...申し訳ありませんが、助けてくれてありがとう!

于 2013-04-01T11:24:50.350 に答える
0

ここに示した内容が正確である場合、問題はおそらく、Shiro がデフォルトで 'shiro.ini' を検索するのに対し、'Shiro.ini' を作成したことです。また、「ShiroFilter が ini ファイルを見つけられません」というメッセージがログに記録されている可能性もあります。

また、ログインを機能させるには、authc が login.jsp に適用されていることを確認する必要があることに注意してください。

于 2013-01-24T12:59:09.287 に答える