spring security 3.2.0.M1 方法級別教程 基於註解——第二部分

基於方法級別的權限控制

spring security經過用戶角色的URL來限制訪問,一般是用來保護Web應用程序的。然而,它也能夠用在方法和類上,使編碼或配置錯誤不容許後門進入受限制的數據。構建安全系統深刻而不弄亂代碼。它還容許額外的靈活性,如容許用戶只能訪問與他們相關的信息,而不是其餘用戶的信息。git

下面的代碼演示了基於方法基本的一部分Spring Security的展現,這個應用程序還演示各類功能和技術在後面的文章中說明。github

基本環境

本示例基於前面搭建的環境,詳情請點擊。。。web

applicationContext-security.xml

修改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

修改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

增長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

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測試運行結果。

源碼

spring security web demo

相關文章
相關標籤/搜索