2012-08-14 50 views
1

嗨我是Spring Security的新手,但我有一些与Spring一起工作的经验,我在mkyong.com网站上跟随教程来创建Spring 3.07中的简单应用程序,并且它工作正常 但是当我尝试添加注释“@Secured(‘ROLE_ADMIN’)”,我发现错误“无法创建的LoginController豆” 有谁能够pointout错误或提供给我简单的弹簧安全应用 这里是我的代码Spring Security简单的应用程序

的web.xml

<web-app id="WebApp_ID" 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"> 

    <display-name>Spring MVC Application</display-name> 

    <!-- Spring MVC --> 
    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class> 
        org.springframework.web.servlet.DispatcherServlet 
       </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <listener> 
     <listener-class> 
        org.springframework.web.context.ContextLoaderListener 
       </listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/mvc-dispatcher-servlet.xml, 
      /WEB-INF/spring-security.xml 
     </param-value> 
    </context-param> 

    <!-- Spring Security --> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class> 
        org.springframework.web.filter.DelegatingFilterProxy 
       </filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

</web-app> 

springsecurity.xml(调度程序servlet)

 <beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:s="http://www.springframework.org/schema/security" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
        http://www.springframework.org/schema/security 
        http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 


<s:global-method-security secured-annotations="enabled" /> 
<s:http auto-config="true" use-expressions="true"> 
    <s:intercept-url pattern="/index.jsp" access="permitAll" /> 
    <s:intercept-url pattern="/welcome*" access="hasRole('ROLE_USER')" /> 
    <s:intercept-url pattern="/helloadmin*" access="hasRole('ROLE_ADMIN')" /> 
    <s:form-login login-page="/login" default-target-url="/welcome" 
     authentication-failure-url="/loginfailed" /> 
    <s:logout logout-success-url="/logout" /> 
</s:http> 
<bean id="LoginController" class="com.mkyong.common.controller.LoginController" /> 
<s:authentication-manager> 
    <s:authentication-provider> 
    <s:user-service> 
     <s:user name="joseph" password="123456" authorities="ROLE_USER,ROLE_ADMIN" /> 
     <s:user name="jane" password="123456" authorities="ROLE_USER" />   
    </s:user-service> 
    </s:authentication-provider> 
</s:authentication-manager> 
</beans> 

MVC调度servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans  
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="com.mkyong.common.controller" > 
    </context:component-scan> 
    <bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"> 
     <value>/WEB-INF/pages/</value> 
     </property> 
     <property name="suffix"> 
     <value>.jsp</value> 
     </property> 
    </bean> 

</beans> 

logincontroller.java

@Controller 
public class LoginController { 

    @RequestMapping(value = "/welcome", method = RequestMethod.GET) 
    public String printWelcome(ModelMap model, Principal principal) { 

     String name = principal.getName(); 
     model.addAttribute("username", name); 
     model.addAttribute("message", "Spring Security Custom Form example"); 
     return "hello"; 

    } 

    @RequestMapping(value = "/login", method = RequestMethod.GET) 
    public String login(ModelMap model) { 

     return "login"; 

    } 

    // @Secured("ROLE_ADMIN") 
    @RequestMapping(value="/delete", method = RequestMethod.GET) 
    public String DeleteAll(ModelMap model, Principal principal) { 
     return "deleteUsers"; 
    } 

    @RequestMapping(value = "/loginfailed", method = RequestMethod.GET) 
    public String loginerror(ModelMap model) { 

     model.addAttribute("error", "true"); 
     return "login"; 

    } 

    @RequestMapping(value = "/logout", method = RequestMethod.GET) 
    public String logout(ModelMap model) { 

     return "login"; 

    } 

    } 

代码在目前的状态成功地执行,但是当我除去( 'ROLE_ADMIN')代码所示@Secured的评论错误不能创建登录控制器bean 任何人都可以告诉我缺少什么或为我提供简单的Spring SEcurity应用程序代码

+0

为什么不来与项目本身的示例应用程序启动? – 2012-08-15 13:40:25

+0

你得到的错误的整个堆栈跟踪是什么? – 2012-08-16 03:08:17

回答

0

适合我。但我使用3.1.0.RELEASE而不是3.0.7。另外,请检查您的进口。它应该是导入org.springframework.security.access.annotation.Secured;

+0

感谢您的答复我会检查它:) 我已经浪费了我的谷歌搜索这个错误的2天 – Jane 2012-08-14 19:35:04

+0

可以分享我你在uploadserver或通过电子邮件创建的项目,我的电子邮件是[email protected] 我仍然倒霉的仍面临着同样的错误:( – Jane 2012-08-14 20:12:33

+0

我想我还没有添加正确的jar文件 你能告诉我这瓶需要 – Jane 2012-08-15 17:02:12

0

只需使用这样的:@Secured({"ROLE_ADMIN"})

+0

没工作过同样的错误 我想我还没有添加正确的jar文件 你能告诉我哪罐子是必需的 – Jane 2012-08-15 17:01:04

+0

为我们提供错误日志,以便我可以告诉你需要什么'.jar'文件。 – 2012-08-16 04:56:24

相关问题