JSP和Spring Security:重定向工作正常,但没有登录

invzbl3

我正在为Spring Boot项目实施Spring Security。

问题是:如果我使用像这样的Spring Security配置:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    private final UserDetailsService userDetailsService;

    public SecurityConfiguration(UserDetailsService userDetailsService) {
        this.userDetailsService = userDetailsService;
    }

    @Bean
    public DaoAuthenticationProvider authProvider() {
        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(userDetailsService);
        authProvider.setPasswordEncoder(bCryptPasswordEncoder());
        return authProvider;
    }


    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().authorizeRequests().
                 antMatchers("/index", "/").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login").failureUrl("/error")
                .defaultSuccessUrl("/CarRentalServlet", true)
                .permitAll()
                .and()
                .logout()
                .permitAll()
                .and()
                .httpBasic();
    }

    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

控制器的逻辑是:

@Controller
public class CarRentalController {
    final OrderRepository orderRepository;
    final VehicleRepository vehicleRepository;
    private final CommandFactory commandFactory;

    public CarRentalController(OrderRepository orderRepository, VehicleRepository vehicleRepository, CommandFactory commandFactory) {
        this.orderRepository = orderRepository;
        this.vehicleRepository = vehicleRepository;
        this.commandFactory = commandFactory;
    }

    @GetMapping("/{view}")
    public String viewMapping(@PathVariable String view) {
        return view;
    }
    @RequestMapping(value = { "/CarRentalServlet" }, method = { RequestMethod.GET, RequestMethod.POST })
    public ModelAndView getCommand(@RequestParam(required = false) String command,
                                   HttpServletRequest req, HttpServletResponse res,
                                   HttpSession session,
    @RequestParam(value = "page", required = false, defaultValue = "0") Integer page
    ) throws ServletException, IOException {

        Page<Vehicle> vehiclePage = vehicleRepository.findAll(new PageRequest(page, 2, new Sort(Sort.Direction.DESC, "dailyPrice")));

        session.setAttribute("number", vehiclePage.getNumber());
        session.setAttribute("totalPages", vehiclePage.getTotalPages());
        session.setAttribute("totalElements", vehiclePage.getTotalElements());
        session.setAttribute("size", vehiclePage.getSize());
        session.setAttribute("data",vehiclePage.getContent());

        session.setAttribute("orderList", orderRepository.findAll());
        session.setAttribute("vehicleList", vehicleRepository.findAll());
        return commandFactory.getCommand(command).execute(req, res, session);
    }
}

login.jspx以jsp形式归档:

                   <div class="col-md-4 col-md-offset-4">
                        <div class="login-panel panel panel-default">
                            <div class="panel-heading">
                                <h3 class="panel-title"><fmt:message key="login.paneltitle" /></h3>
                            </div>
                            <div class="panel-body">
                                <form role="form" name="loginForm" method="POST" action="${pageContext.request.contextPath}/login">
                                    <input type="hidden" name="command" value="logInCommand"/>
                                    <fieldset>
                                        <div class="form-group">
                                            <fmt:message key="login.label.login" var="loginValue" />
                                            <input class="form-control" placeholder="${loginValue}" name="username" type="text" autofocus=""/>
                                        </div>
                                        <div class="form-group">
                                            <fmt:message key="login.label.password" var="passwordValue" />
                                            <input class="form-control" placeholder="${passwordValue}" name="password" type="password" value=""/>
                                        </div>

                                        <fmt:message key="login.button.login" var="loginButtonValue" />
                                        <input type="submit" class="btn btn-lg btn-success btn-block" value="${loginButtonValue}" />
                                    </fieldset>
                                </form>
                            </div>
                        </div>
                    </div>

另一个jsp形式为index.jsp

<div class="navbar-default navbar-static-side" role="navigation">
                    <div class="sidebar-collapse">
                        <ul class="nav" id="side-menu">
                            <c:if test="${!empty sessionScope.userName}">
                                <li>
                                    <form name="makeOrderButton" method="post" action="CarRentalServlet">
                                        <input type="hidden" name="command" value="makeOrderButtonCommand"/>
                                        <a href="" onclick="parentNode.submit();
                                                return false;">
                                            <i class="fa fa-shopping-cart fa-fw"></i>
                                            <fmt:message key="index.button.makeOrder" />
                                        </a>
                                    </form>
                                </li>
                                <c:if test="${sessionScope.userTypeID == 1}">
                                    <li>
                                        <form name="adminZoneButton" method="post" action="CarRentalServlet">
                                            <input type="hidden" name="command" value="adminZoneButtonCommand"/>
                                            <a href="" onclick="parentNode.submit();
                                                    return false;">
                                                <i class="fa fa-wrench fa-fw"></i>
                                                <fmt:message key="index.button.adminZone" />
                                            </a>
                                        </form>
                                    </li>
                                </c:if>
                            </c:if>
                        </ul>
                        <!-- /#side-menu -->
                    </div>
                    <!-- /.sidebar-collapse -->
                </div>

它将我重定向到正确的端点/CarRentalServlet,但登录根本无法正常工作。

例如,如果我不使用SecurityConfiguration类,但是将修改我的jsp文件,例如:

action="CarRentalServlet"代替action="${pageContext.request.contextPath}/login"name="login"代替name="username"

它可以按预期工作,并且登录正常,但是在这种情况下,我不使用Spring Security。

有人可以建议我如何修复Spring Security配置或JSP表单,以使登录在没有Spring Security的情况下可以正常工作。

invzbl3

问题是由于使用率<c:if test="${!empty sessionScope.userName}"><c:if test="${sessionScope.userTypeID == 1}">jsp文件中的原因。

为了解决这个问题,我使用了authorize tag因此,我已更改为,<sec:authorize access="isAuthenticated()"><sec:authorize access="hasRole('ADMIN')">相应地进行了更改

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JSP和Spring Security:重定向工作正常,但没有登录

来自分类Dev

Spring Security和angular javascript重定向到登录页面

来自分类Dev

Spring Security和Angular javascript重定向到登录页面

来自分类Dev

如何重定向到jsp登录页面,如果用户还没有登录,Java servlet?

来自分类Dev

Spring Security用户角色和访问JSP

来自分类Dev

JSP 和 Spring 有什么区别?

来自分类Dev

登录后,Spring Security再次重定向到登录页面

来自分类Dev

Spring Security:登录后重定向到登录页面

来自分类Dev

Spring Security:登录后重定向到登录页面

来自分类Dev

登录后,Spring Security再次重定向到登录页面

来自分类Dev

页面没有在jsp中重定向

来自分类Dev

Spring Security总是重定向到登录页面

来自分类Dev

Spring Security:根据某些条件重定向登录的用户

来自分类Dev

Spring Security:登录后如何重定向到REST URL

来自分类Dev

从Spring Security中排除从登录页面重定向的特定页面

来自分类Dev

成功登录后,Spring Security JSF不重定向

来自分类Dev

Spring Security *始终*重定向到登录表单

来自分类Dev

阻止Spring Security在登录/注销后从302重定向

来自分类Dev

Spring Security在登录后始终重定向到“ /”

来自分类Dev

Grails和Spring Security插件:根据角色在登录时重定向用户

来自分类Dev

Spring Oauth2登录重定向如何工作?

来自分类Dev

Spring Security将自定义登录页面重定向到其自身-重定向过多

来自分类Dev

使用重定向:uri登录后将Spring Security重定向到页面

来自分类Dev

kubernetes入口和https重定向的Apache无法正常工作

来自分类Dev

Grails Spring Security OAuth2提供者对具有正确承载令牌的资源的请求重定向到登录

来自分类Dev

Spring Security-用户身份验证有时会失败,并且用户将被重定向到登录页面

来自分类Dev

Spring MVC Controller:“返回前进”,“返回重定向”和“返回jsp文件”之间有什么区别

来自分类Dev

在带有Spring MVC和Hibernate的JSP上显示图像

来自分类Dev

使用Spring Security登录并且mongodb无法正常工作

Related 相关文章

  1. 1

    JSP和Spring Security:重定向工作正常,但没有登录

  2. 2

    Spring Security和angular javascript重定向到登录页面

  3. 3

    Spring Security和Angular javascript重定向到登录页面

  4. 4

    如何重定向到jsp登录页面,如果用户还没有登录,Java servlet?

  5. 5

    Spring Security用户角色和访问JSP

  6. 6

    JSP 和 Spring 有什么区别?

  7. 7

    登录后,Spring Security再次重定向到登录页面

  8. 8

    Spring Security:登录后重定向到登录页面

  9. 9

    Spring Security:登录后重定向到登录页面

  10. 10

    登录后,Spring Security再次重定向到登录页面

  11. 11

    页面没有在jsp中重定向

  12. 12

    Spring Security总是重定向到登录页面

  13. 13

    Spring Security:根据某些条件重定向登录的用户

  14. 14

    Spring Security:登录后如何重定向到REST URL

  15. 15

    从Spring Security中排除从登录页面重定向的特定页面

  16. 16

    成功登录后,Spring Security JSF不重定向

  17. 17

    Spring Security *始终*重定向到登录表单

  18. 18

    阻止Spring Security在登录/注销后从302重定向

  19. 19

    Spring Security在登录后始终重定向到“ /”

  20. 20

    Grails和Spring Security插件:根据角色在登录时重定向用户

  21. 21

    Spring Oauth2登录重定向如何工作?

  22. 22

    Spring Security将自定义登录页面重定向到其自身-重定向过多

  23. 23

    使用重定向:uri登录后将Spring Security重定向到页面

  24. 24

    kubernetes入口和https重定向的Apache无法正常工作

  25. 25

    Grails Spring Security OAuth2提供者对具有正确承载令牌的资源的请求重定向到登录

  26. 26

    Spring Security-用户身份验证有时会失败,并且用户将被重定向到登录页面

  27. 27

    Spring MVC Controller:“返回前进”,“返回重定向”和“返回jsp文件”之间有什么区别

  28. 28

    在带有Spring MVC和Hibernate的JSP上显示图像

  29. 29

    使用Spring Security登录并且mongodb无法正常工作

热门标签

归档