权限控制

1. 页面标签:<security:authorize/> 能够嵌套
2. 注解方式, 只能用其中一种:
* JSR250
引入依赖
开启jsr250注解 security
@RoleAllowed
* Secured注解, security自带的
开启Secured注解注解 security
@Secured
* Spring的注解
开启Spring注解 security
@PreAuthorizejava

 
1、
一、这里须要先开启SpELl表达式,不然不能使用SpringSecurity页面对应的标签

二、

<security:http auto-config="true" use-expressions="true">
<!-- 配置拦截的请求地址,任何请求地址都必须有ROLE_USER的权限 -->
<security:intercept-url pattern="/index.jsp" access="ROLE_USER" />
<security:intercept-url pattern="/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />

//略....
</security:http>spring

 

三、express

<security:authorize access="hasAnyRole('ROLE_ADMIN','ROLE_USER')">
<li class="treeview"><a href="#"> <i class="fa fa-cogs"></i>
<span>系统管理</span> <span class="pull-right-container"> <i
class="fa fa-angle-left pull-right"></i>
</span>


</a>
<ul class="treeview-menu">

<li id="system-setting"><a
href="${pageContext.request.contextPath}/user/list"> <i
class="fa fa-circle-o"></i> 用户管理
</a></li>
此标签表示下面的内容只有管理员权限才能够访问

<security:authorize access="hasAnyRole('ROLE_ADMIN')">
<li id="system-setting"><a
href="${pageContext.request.contextPath}/role/list"> <i
class="fa fa-circle-o"></i> 角色管理
</a></li>
<li id="system-setting"><a
href="${pageContext.request.contextPath}/permission/list">
<i class="fa fa-circle-o"></i> 权限管理
</a></li>
<li id="system-setting"><a
href="${pageContext.request.contextPath}/pages/syslog-list.jsp"> <i
class="fa fa-circle-o"></i> 访问日志
</a></li>
</security:authorize>
</ul></li>
</security:authorize>

四、经过上面的控制,咱们发现一个问题,用户只是页面看不到菜单按钮,但仍然能访问原来地址,咱们须要作后台权限控制。这里提供了多种注解方式实现,咱们着重讲讲其中3种注解实现方式。
但不管哪一种方式,都须要首先开启AOP支持,而且不能多种注解同时使用。修改SpringMVC配置文件以下:

<!--开启AOP-->
<aop:aspectj-autoproxy proxy-target-class="true" />api

 

@RolesAllowed

 

JSR 250做为一个Java规范请求,它的目标是定义一组注解,这些注释解决常见的语义概念,所以能够被许多JavaEE和JavaSE组件使用。这是为了不这些组件之间的冗余注释。随着声明式注释驱动的配置愈来愈多地应用于Java框架和应用程序中,例如:spring经过注释使其框架的更多组件可配置,JSR 250的重要性在未来可能会增长。框架

 

使用该注解须要首先引入依赖:jsp

<dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>post

在spring-security.xml配置文件中开启JSR-250的注解支持url

<security:global-method-security jsr250-annotations="enabled"/>spa

 

@RolesAllowed("ROLE_ADMIN")
public class RoleController {}日志

 

security注解方式权限拦截:@Secured

 

在spring-security.xml配置文件中开启注解支持

<security:global-method-security secured-annotations="enabled"/>

在Controller类或者方法添加注解

@Secured("ROLE_ADMIN")

 

Spring表达式的方式

在spring-security.xml配置文件中开启注解支持

<security:global-method-security pre-post-annotations="enabled"/>

在Controller类或者方法添加注解

@PreAuthorize("hasAuthority('ROLE_ADMIN')")

 

页面403处理

在用户没有权限访问时,常常会出现403页面,不是很友好。SpringSecurity对这个也有控制,只须要在spring-security.xml中加上以下配置便可。

 

<security:access-denied-handler error-page="/403.jsp"/>

相关文章
相关标签/搜索