spring_security权限应用
2019独角兽企业重金招聘Python工程师标准>>>
web.xml配置如:
<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>
通常在spring-security.xml的配置:
<!--设置匹配管理员用户url,登录页面和所拥的权限,以及引用adminAuthManager验证管理 --><http auto-config="true" pattern="/admin/**" use-expressions="true" authentication-manager-ref="adminAuthManager"><form-login login-processing-url="/admin/j_spring_security_check" login-page="/admin_login.html" authentication-failure-url="/common/login/usernameCheckFailed" default-target-url="/admin/login/adminCheckSuccess"always-use-default-target="true"/><!-- <logout logout-url="/module/j_spring_security_logout" logout-success-url="/" /> --><!-- 自定义退出过滤器 --><custom-filter ref="userLogoutFilter" position="LOGOUT_FILTER" /><intercept-url pattern="/admin/department/**" access="hasRole('ROLE_ADMIN_DEPARTMENT')" /><intercept-url pattern="/admin/processdefinition/**" access="hasRole('ROLE_ADMIN_PROCESSDEFINITION')" /><intercept-url pattern="/admin/roleManage/**" access="hasRole('ROLE_ADMIN_ROLEMANAGE')" /><intercept-url pattern="/admin/moduleManage/**" access="hasRole('ROLE_ADMIN_MODULEMANAGE')" /><intercept-url pattern="/admin/parentModuleManage/**" access="hasRole('ROLE_ADMIN_PARENTMODULEMANAGE')" /><intercept-url pattern="/admin/manageUserAccount/**" access="hasRole('ROLE_ADMIN_MANAGEUSERACCOUNT')" /><intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" /></http><!-- 不需要进行认证的资源,3.0之后才改为这样配置 --><!-- <http security="none" pattern="/**/index" /> --><http security="none" pattern="/**/*login.html" /><http security="none" pattern="/**/*.jpg" /><http security="none" pattern="/**/*.png" /><http security="none" pattern="/**/*.gif" /><http security="none" pattern="/**/*.css" /><http security="none" pattern="/**/*.js" /><http security="none" pattern="/*.ico" /><http security="none" pattern="/*.jpg" /><!--后台管理用户验证管理bean --><authentication-manager id="adminAuthManager"><authentication-provider user-service-ref="adminDetailService"><password-encoder hash="md5"></password-encoder></authentication-provider></authentication-manager><!-- 普通用户退出的过滤器配置 --><beans:bean id="userLogoutFilter" class="com.bluedon.cb.util.filter.UserLogoutFilter"><!-- 处理退出的虚拟url --><beans:property name="filterProcessesUrl" value="/module/logout" /><!-- 退出处理成功后的默认显示url --><beans:constructor-arg index="0" value="/" /><beans:constructor-arg index="1"><!-- 退出成功后的handler列表 --><beans:array><!-- 加入了开发人员自定义的退出成功处理 --><beans:bean id="userLogoutSuccessHandler" class="com.bluedon.cb.util.filter.UserLogoutHandler" /></beans:array></beans:constructor-arg></beans:bean>
说明:
lowercase-comparisons:表示URL比较前先转为小写。
path-type:表示使用Apache Ant的匹配模式。
access-denied-page:访问拒绝时转向的页面。
access-decision-manager-ref:指定了自定义的访问策略管理器。当系统角色名的前缀不是默认的ROLE_时,需要自定义访问策略管理器。
login-page:指定登录页面。
login-processing-url:指定了客户在登录页面中按下 Sign In 按钮时要访问的 URL。与登录页面form的action一致。其默认值为:/j_spring_security_check。
authentication-failure-url:指定了身份验证失败时跳转到的页面。
default-target-url:指定了成功进行身份验证和授权后默认呈现给用户的页面。
always-use-default-target:指定了是否在身份验证通过后总是跳转到default-target-url属性指定的URL。
logout-url:指定了用于响应退出系统请求的URL。其默认值为:/j_spring_security_logout。
logout-success-url:退出系统后转向的URL。
invalidate-session:指定在退出系统时是否要销毁Session。
max-sessions:允许用户帐号登录的次数。范例限制用户只能登录一次。
exception-if-maximum-exceeded: 默认为false,此值表示:用户第二次登录时,前一次的登录信息都被清空。
当exception-if-maximum-exceeded="true"时系统会拒绝第二次登录。
下面是security,用户退出的session处理(可以不写):
package com.bluedon.cb.util.filter;import org.springframework.security.web.authentication.logout.LogoutFilter;
import org.springframework.security.web.authentication.logout.LogoutHandler;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;/*** * * Description:退出过滤器* * Time:2016年3月2日下午5:38:04* @version 1.0* @since 1.0*/
public class UserLogoutFilter extends LogoutFilter{public UserLogoutFilter(String logoutSuccessUrl, LogoutHandler[] handlers) {super(logoutSuccessUrl, handlers);}public UserLogoutFilter(LogoutSuccessHandler logoutSuccessHandler,LogoutHandler[] handlers) {super(logoutSuccessHandler, handlers);}}
package com.bluedon.cb.util.filter;import java.util.Date;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.LogoutHandler;import com.bluedon.cb.common.entity.LoginLog;
import com.bluedon.cb.common.service.CommonLogService;
import com.bluedon.cb.util.SpringContextUtil;
import com.bluedon.cb.util.constants.Constants;/*** * * Description:退出成功处理器* * Time:2016年3月2日下午5:38:29* @version 1.0* @since 1.0*/
public class UserLogoutHandler implements LogoutHandler {private Logger log = LoggerFactory.getLogger(UserLogoutHandler.class);public UserLogoutHandler() {}@Overridepublic void logout(HttpServletRequest req, HttpServletResponse arg1, Authentication arg2) {// TODO Auto-generated method stub//modify by qinguidong 添加try catch 为了防止session超时,而取到的loginLog为空,报错。不能返回到登录页面try {HttpSession session = req.getSession();LoginLog loginLog = (LoginLog)session.getAttribute(Constants.LOGIN_LOG);CommonLogService commonLogService = (CommonLogService)SpringContextUtil.getBean("commonLogServiceImpl");loginLog.setLoloLogoutDate(new Date());//退出时间//清除sessionif (session != null) { session.invalidate(); } SecurityContextHolder.clearContext(); //入库int count = commonLogService.updateLoginLog(loginLog);if(count != Constants.SUCCESS){log.error("记录登录日志失败了:"+loginLog.getLoloUsroName());}} catch (BeansException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
转载于:https://my.oschina.net/u/920528/blog/692824
spring_security权限应用相关推荐
- Spring Security到底是什么
Spring Security你懂了吗 前置知识 掌握Spring框架 掌握SpringBoot框架 掌握JavaWeb框架 下面的内容主要是用来介绍用户认证和用户的授权 两个安全认证框架对比 Spr ...
- pythonDjango后端笔记
文章目录 软件开发架构 纯手撸web框架 借助于wsgiref模块 动静态网页 模块语法之Jinja2模块 自定义简易版本web框架请求中各个模块的作用 python3大主流web框架 注意事项 Dj ...
- 权限管理-整合SpringSecurity
在spring_security引入相关依赖 <dependencies> <!-- Spring Security依赖 --><dependency><gr ...
- 用户登陆进去后,没有权限操作
与用户表关联的角色表,其中的角色名(role_name)要改为USER和ADMIN 因为spring_security有权限操作的是 ROLE_USER和ROLE_ADMIN 转载于:https:// ...
- Springboot + Spring Security 实现前后端分离登录认证及权限控制
Spring Security简介 Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展 ...
- RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置
1. 服务器管理 我们使用 "节点" 来指代 RabbitMQ 实例,当我们谈到 RabbitMQ 节点时指的是 RabbitMQ 应用程序和其所在的 Erlang 节点. 1.1 ...
- Linux shell 学习笔记(5)— 文件权限(添加、修改、删除用户及创建、修改群组)
1. Linux的安全性 Linux 安全系统的核心是用户账户.每个能进入 Linux 系统的用户都会被分配唯一的用户账户.用户对系统中各种对象的访问权限取决于他们登录系统时用的账户. 用户权限是通过 ...
- Vue 自定义权限指令
前述 虽然VUE 定义了一些常用的指令,例如v-on.v-bind等,但是在我们实际开发的时候,还是会自己定义一些指令用于适应我们自己的业务. 实现 这里由于我的项目做了动态权限,页面的按钮也需要根据 ...
- npm install 提示权限不足 Error: EPERM: operation not permitted, unlink XXX
问题描述 使用npm install出现 npm install 提示权限不足 Error: EPERM: operation not permitted, unlink XXX提示 原因 这里原因有 ...
最新文章
- Nature子刊:Knight组发布快速UniFrac算法
- 关于自动驾驶汽车法律政策的十点思考
- T100 section已经修改过
- 她说要介绍10000个开源项目?来!一起监督他!
- Jquery高亮显示文本中重要的关键字
- uva 10453 - Make Palindrome(dp)
- 【SSH】——Hibernate三种状态之间的转化
- java 冒泡排序_Java冒泡排序详解
- java excel jxls_java通过jxls框架实现导入导出excel文件实例
- MaxCompute管家详解--管家助力,轻松玩转MaxCompute
- aix oracle监听配置_Oracle数据库03用户权限与数据库的连接
- Swift 变量、常量、数据类型
- 非因解读 | Multiplex immunofluorescnece-多重免疫荧光结合单细胞蛋白组技术探索肿瘤微环境
- 配置Skype for business 2015混合部署
- 【券后价12.90元】【包邮】植护婴儿湿巾纸宝宝湿纸巾儿童手口专用80抽家用大包装特价实惠装...
- STM32CubeMX新建工程+基本IO配置过程
- 计算机考证上传照片说明
- 二十道面试题成都至少16k
- 新闻推荐系统:基于内容的推荐算法——TFIDF、衰减机制(github java代码)
- nodejs+vue+elementui高校体育馆场地预订系统