Spring Security教程之Spring Security实现访问控制

在Spring Security中,实现访问控制或权限控制是非常容易实现的,请看下面的代码片段:

1
2
3
  <http auto-config="true">
    <intercept-url pattern="/admin*" access="ROLE_ADMIN" />
  </http>

它的意思是,只有“ROLE_ADMIN”权限的用户可以允许访问“ /admin*”路径,如果没有权限的用户访问则会提示“http 403 access denied page”错误。

本次教程中,我们像你展示只有“ROLE_ADMIN”权限的用户可以访问“/admin*”

1.项目依赖

访问控制需要Spring Security的核心包,请参考Spring+Spring Security+Maven 实现的一个Hello World例子 列出的jar

2.Spring MVC

Spring MVC做控制器并返回一个“hello”视图,这个你应该可以理解的。

WelcomeController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.mkyong.common.controller;
  
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
  
@Controller
public class WelcomeController {
  
    @RequestMapping(value = "/admin", method = RequestMethod.GET)
    public String welcomeAdmin(ModelMap model) {
  
        model.addAttribute("message""Spring Security - ROLE_ADMIN");
        return "hello";
  
    }
  
}

 hello.jsp

1
2
3
4
5
6
7
8
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
    <h3>Message : ${message}</h3>
  
    <a href="<c:url value="j_spring_security_logout" />" > Logout</a>
</body>
</html>

3.Spring Security

一下是Sprign Security全部的配置文件,只允许“eclipse”用户可以访问“/hello”页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  
    <http auto-config="true">
        <intercept-url pattern="/admin*" access="ROLE_ADMIN" />
        <logout logout-success-url="/admin" />
    </http>
  
    <authentication-manager>
      <authentication-provider>
       <user-service>
        <user name="it161" password="password" authorities="ROLE_USER" />
        <user name="eclipse" password="password" authorities="ROLE_ADMIN" />
       </user-service>
      </authentication-provider>
    </authentication-manager>
  
</beans:beans>

4.示例

http://localhost:8080/SpringMVC/admin

1.默认的登陆页面如下所示:

2.如果用“it161”登陆时,就会提示“http 403 is access denied page”,因为it161是“ROLE_USER”权限

3.如果用“eclipse”登陆的话,“hello.jsp”就会展示,因为“eclipse”是“ROLE_ADMIN“权限。

默认的403页面非常丑陋,请可以阅读本人自定义你的403页面:Spring Security教程-Spring Security实现访问控制

原创文章,转载请注明出处:http://www.it161.com/article/javaDetail?articleid=140113230945

更多原创内容,请访问:http://www.it161.com/

posted @ 2014-01-23 23:47  大象软件  阅读(1847)  评论(0编辑  收藏  举报