最近在做SSM整合框架的企业权限管理的项目(某马教程),碰到spring-security类的错误:Access is denied。
------------------问题是,我点开访问链接,连login.jsp都登录不上。
问题描述:login.jsp访问404
解决方法: 检查spring-security.xml配置文件中以下配置:
<security:http pattern="/login.jsp" security=“none”/>
<security:http pattern="/failer.jsp" security=“none”/>
<security:http pattern="/css/" security=“none”/>
<security:http pattern="/img/" security=“none”/>
<security:http pattern="/plugins/**" security=“none”/>
<!-- 定义跳转的具体的页面 -->
<security:form-login
login-page="/login.jsp"
login-processing-url="/login.do"
default-target-url="/index.jsp"
authentication-failure-url="/pages/failer.jsp"
authentication-success-forward-url="/pages/main.jsp"
/>
再看login.jsp页面所在的位置:
问题就很明白了,路径不对。这里可以修改配置文件,或者把这login.jsp和failer.jsp移动到与pages同级的目录下。
----------------------还有登录不上的问题:
问题出在form表单的提交路径:
action="${pageContext.request.contextPath}/login"
配置文件中指明的路径是:
login-processing-url="/login.do"
这两个路径不一样,所以导致这个问题。
-----------------------还有另一个角色对不上的问题,数据库中roleName的值为admin或user。而配置文件中写着:
<security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/>
这就需要改IUserServiceImpl的(给这个拿到的rolename加个前缀):
authorities.add(new SimpleGrantedAuthority("ROLE_"+role.getRoleName()));