请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,security-in-action的项目里都是按照步骤配置的,但是界面上既有isAuthenticated的内容又有isAnonymous的内容

index界面

  • <!DOCTYPE html>
    <html
           xmlns="http://www.w3.org/1999/xhtml"
           xmlns:th="http://www.thymeleaf.org"
           xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4"
    >

    <head th:replace="~{fragments/header :: header}">
    </head>
    <body>


      <div class="container blog-content-container">

           <div sec:authorize="isAuthenticated()" >
            <p>已有用户登陆</p>
            <p>登陆的用户为:<span sec:authentication="name"></span></p>
            <p>用户角色为:<span sec:authentication="principal.authorities"></span></p>
         </div>
         <div sec:authorize="isAnonymous()">
            <p>没有用户登陆</p>
         </div>
      </div><!-- /.container -->

      <div th:replace="~{fragments/footer :: footer}">...</div>

    </body>
    </html>

SecurityConfig.java

  • package com.shiliangxu.config;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;

    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;





    /*******************************************************************************************************
    * Copyright © 2018 ShiliangXu. HIT .College of Computer Science and Technology. All rights reserved.
    * @Package: com.shiliangxu.config
    * @author: ShiliangXu
    * @date: 2018/2/5 20:12
    * @Description: 安全配置类
    *******************************************************************************************************/
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter{
       /**
        * 自定义配置
        */
       @Override
       protected void configure(HttpSecurity http) throws Exception {
           http.authorizeRequests()
                   .antMatchers("/css/**","/js/**", "/fonts/**", "/index").permitAll() // 都可以访问
                   .antMatchers("/users/**").hasRole("ADMIN") // 需要相应的角色才能访问
                   .and()
                   .formLogin()   //基于 Form 表单登录验证
                   .loginPage("/login").failureUrl("/login-error"); // 自定义登录界面
       }

       /**
        * 认证信息管理
        * @param auth
        * @throws Exception
        */
       @Autowired
       public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
           auth
                   .inMemoryAuthentication()//认证信息放在内存中
                   .withUser("xushiliang").password("123456").roles("ADMIN");
       }


    }
    https://img1.sycdn.imooc.com//szimg/5a7914ac0001857112800984.jpg

  • 点击登陆之后是可以进入登录界面的,而且如果输入用户名和密码错误的时候,会显示错误,然后重新输入,如果输入正确的话,跳转到的还是上面的界面。既有isAuthenticated的内容又有isAnonymous的内容,但是就是显示当前登录的是谁。

  • 所以页面跳转是没有问题的,我认为还是securityConfig的问题或者是header界面,index的界面的问题,

正在回答 回答被采纳积分+3

2回答

厉害的乌废猫 2018-08-06 16:50:33

我也碰到同样问题,Spring Security 对于页面角色控制是有效的。例如:不登录无法进入users页面,登录成功才可以。

问题就是页面上"sec:"的标签,全部不生效,Gradle里依赖我也检查过了,Ide都能跳出sec:后面的提示,但就是不生效

0 回复 有任何疑惑可以回复我~
  • 提问的同学,你问题找到了吗?
    回复 有任何疑惑可以回复我~ 2018-08-06 16:50:59
  • 问题已找到,我网络不太好,gradle配置好之后,thymeleaf支持springsecurity的依赖没下载成功,重新添加了下,一定一定要写版本号 3.0.2.RELEASE。默认的版本是不对的。
    回复 有任何疑惑可以回复我~ 2018-08-06 17:06:32
  • 嗯应该就是这个问题了。一定要升级 thymeleaf 版本
    回复 有任何疑惑可以回复我~ 2018-08-06 19:53:40
老卫 2018-02-06 12:56:37

对照课程最新的代码,看下哪里有问题~

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信