spring security經過用戶角色的URL來限制訪問,一般是用來保護Web應用程序的。然而,它也能夠用在方法和類上,使編碼或配置錯誤不容許後門進入受限制的數據。構建安全系統深刻而不弄亂代碼。它還容許額外的靈活性,如容許用戶只能訪問與他們相關的信息,而不是其餘用戶的信息。git
下面的代碼演示了基於方法基本的一部分Spring Security的展現,這個應用程序還演示各類功能和技術在後面的文章中說明。github
本示例基於前面搭建的環境,詳情請點擊。。。web
修改applicationContext-security.xml以支持最小的spring security運行環境。 配置以下:spring
<!-- lang: xml -->express
<debug/> <http auto-config="true" use-expressions="true"> <intercept-url pattern="/**" access="permitAll"/> </http> <authentication-manager> <authentication-provider> <user-service> <user name="user" password="user" authorities="ROLE_USER"/> <user name="admin" password="admin" authorities="ROLE_ADMIN"/> </user-service> </authentication-provider> </authentication-manager>
修改app-servlet.xml以支持Spring mvc 在這設置了global-method-security 這設置必須在spring 基本類掃描以前否則產生的對象會沒有該註解效果。 配置以下:瀏覽器
<!-- lang: xml -->安全
<!-- 不過濾靜態資源 -->mvc
<mvc:resources mapping="/resources/**" location="/resources/" order="0" /> <mvc:resources mapping="/favicon.ico" location="/resources/img/favicon.ico" order="0"/> <sec:global-method-security secured-annotations="enabled" jsr250-annotations="enabled" pre-post-annotations="enabled"/> <!-- 自動掃描 --> <context:component-scan base-package="org.excalibur" ></context:component-scan> <!-- 定義JSP文件的位置 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/views/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 默認的註解映射的支持 --> <tx:annotation-driven /> <mvc:annotation-driven />
增長AppController,定義了調用業務邏輯層的代碼。 代碼以下:app
@Controller public class AppController { @Autowired private UserService userService; @RequestMapping(value = "/") public String index(){ System.out.println("進入首頁"); return "index"; } @RequestMapping(value = "/login") public String login(){ System.out.println("進入首頁"); userService.login("excalibur","123456"); return "home"; } }
web.xml中增長spring security的過濾器 以下:jsp
<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>
瀏覽器http://localhost:8080/login
測試運行結果。