当前位置:首页>开发>正文

springmvc整合springsecurity异常,求助 springboot 整合springsecurity 前后端分离怎么实现登陆

2023-04-14 01:12:02 互联网 未知 开发

 springmvc整合springsecurity异常,求助 springboot 整合springsecurity 前后端分离怎么实现登陆

springmvc整合springsecurity异常,求助

通过Spring mvc框架提供的SimpleMappingExceptionResolver来集中处理,该类可以捕获所有控制器抛出的异常,并将它映射到配置的视图中。 用法配置如下: failure showDBError showError

springboot 整合springsecurity 前后端分离怎么实现登陆

首先分析一下工作量吧,因为要支持 restful 风格的接口,那么我们在判断用户是不是有权限访问的时候不仅要判断 url 还要判断 请求方式。 所以我门需要修改数据库表,因为我门的权限表还没有method 字段。
由于要判断 url 和 method 所以要在CustomUserService 类的 loadUserByUsername
方法中要添加 权限的 url 和 method 。但是SimpleGrantedAuthority 只支持传入一个参数。
所以我门考虑要再写一个类 实现 GrantedAuthority 接口,并在构造函数中传入两个参数。嘻嘻。
由于我们不仅要判断url 还要 判断请求方法,所以当然要修改 MyAccessDecisionManager 的decide 方法的内容了。
因为:decide 方法是判定是否拥有权限的决策方法 ,三个参数的含义分别为:
//authentication 是释CustomUserService中循环添加到 GrantedAuthority 对象中的权限信息集合.

//object 包含客户端发起的请求的requset信息,可转换为 HttpServletRequest request = ((FilterInvocation) object).getHttpRequest()

//configAttributes 为MyInvocationSecurityMetadataSource的getAttributes(Object object)这个方法返回的结果,此方法是为了判定用户请求的url 是否在权限表中,如果在权限表中,则返回给 decide 方法,用来判定用户是否有此权限。如果不在权限表中则放行。

当然在 修改一下 MyInvocationSecurityMetadataSourceService 的getAttributes
方法。//此方法是为了判定用户请求的url 是否在权限表中,如果在权限表中,则返回给 decide
方法,用来判定用户是否有此权限。如果不在权限表中则放行。
//因为我不想每一次来了请求,都先要匹配一下权限表中的信息是不是包含此url,我准备直接拦截,不管请求的url 是什么都直接拦截,然后在MyAccessDecisionManager的decide 方法中做 拦截还是放行的决策。

5.关闭csrf
6.添加restful 风格的接口

好了分析完了,接下来就是编码了。

请教,spring security 配置

1、原有框架springMVC hibernate mysql,我想在此基础上添加spring security进行登录权限验证,首先想实现将用户名和密码写在配置文件中 
2、添加jar 

org.springframework.security spring-security-core ${org.springframework.version}  
        org.springframework.security spring-security-web ${org.springframework.version}  
        org.springframework.security spring-security-config ${org.springframework.version}2、web.xml 

……  
springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy  
    springSecurityFilterChain /*  
……  
org.springframework.web.context.ContextLoaderListener  
    org.springframework.security.web.session.HttpSessionEventPublisher3、login.jsp 

" method="post"> : " /> 4、springSecuritySimple-config.xml xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"> access-denied-page="/403.jsp" > login-processing-url="j_spring_security_check" always-use-default-target="true" default-target-url="/login.do" authentication-failure-url="/403.jsp" /> logout-success-url="/login.jsp" invalidate-session="true" /> invalid-session-url="/sessionTimeout.do" session-fixation-protection="none"> error-if-maximum-exceeded="true"/>