SpringBoot framework: Admin

SpringBoot framework: Admin



 

Admin Login

  • Build the login page and the page Admin
    • Admin Home: According to the background page design blog list manager to manage
    • Administrator login page: Semantic UIthe official website login form layout options there, you can write directly shining
  • UserServicewithUserRespository
    • In com.xxxcase a new package servicebag, used to store documents related to the service logic processing
    • Called a new UserServiceinterface file ( Interface), the user interface definition services
      package com.skgxsn.blog_idea2017.service;
      
      import com.skgxsn.blog_idea2017.po.User;
      
      public interface UserService {
      
          User checkUser(String username, String password);
      }
    • Implements the interface with the new package UserServiceImpl.javaused to implement the interface
      package com.skgxsn.blog_idea2017.service;
      
      import com.skgxsn.blog_idea2017.dao.UserRepository;
      import com.skgxsn.blog_idea2017.po.User;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;
      
      @Service
      public class UserServiceImpl implements UserService {
      
          @Autowired
          private UserRepository userRepository;
      
          @Override
          public User checkUser(String username, String password) {
              User user = userRepository.findByUsernameAndPassword(username, password);
              return user;
          }
      }
    • com.xxxUnder the new package bag daofor interaction database, this new packet UserRespositoryinterface:
      package com.skgxsn.blog_idea2017.dao;
      
      import com.skgxsn.blog_idea2017.po.User;
      import org.springframework.data.jpa.repository.JpaRepository;
      
      public interface UserRepository extends JpaRepository<User, Long> {
      
          User findByUsernameAndPassword(String username, String password);
      }
  • LoginControllerRealization landing
    • webPackage under the new adminpackage, under the new LoginContorller.java, to achieve the administrator login:
      package com.skgxsn.blog_idea2017.web.admin;
      
      import com.skgxsn.blog_idea2017.po.User;
      import com.skgxsn.blog_idea2017.service.UserService;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.PostMapping;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestParam;
      import org.springframework.web.servlet.mvc.support.RedirectAttributes;
      
      import javax.servlet.http.HttpSession;
      
      @Controller
      @RequestMapping("/admin")
      public class LoginController {
      
          @Autowired
          private UserService userService;
      
          @GetMapping
          public String loginPage() {
              return "admin/login";
          }
      
          @PostMapping("/login")
          public String login(@RequestParam String username,
                              @RequestParam String password,
                              HttpSession session,
                              RedirectAttributes attributes) {
              User user = userService.checkUser(username, password);
              if (user != null) {
                  user.setPassword(null);
                  session.setAttribute("user", user);
                  return "admin/index";
              }else {
                  attributes.addFlashAttribute ( "the Message", "user name and password error" );
                   return "redirect: / ADMIN" ;
              }
          }
      
          @GetMapping("/logout")
          public String logout(HttpSession session) {
              session.removeAttribute("user");
              return "redirect:/admin";
          }
      }
    • In login.htmladding the login error message:
      <div class="ui error mini message"></div>
                          <div class="ui negative mini message" th:unless="${#strings.isEmpty(#messages)}" th:text="${#messages}">用户名或密码错误</div>
    • Define script:
      <script>
          $('.ui.form').form({
              fields : {
                  username : {
                      indentifier:'username',
                      rules: [{
                          type : 'empty',
                          prompt: " Please enter your user name ' ,
                      }]
                  },
                  password : {
                      indentifier:'password',
                      rules: [{
                          type : 'empty',
                          prompt: " Please enter your password ' ,
                      }]
                  }
              }
          })
      </script>
  • MD5encryption
    • In com.xxxthe new packet at Utilthe packet for storing tools, a new MD5Utils.javaset encryption:
      package com.skgxsn.blog_idea2017.util;
      
      import java.security.MessageDigest;
      import java.security.NoSuchAlgorithmException;
      
      public  class MD5Utils {
      
          /**
           * MD5 encryption class
           * @Param str string to be encrypted
           * @Return     after a few meters string
            * / 
          public  static String code (STR String) {
               the try {
                  MessageDigest md = MessageDigest.getInstance("MD5");
                  md.update(str.getBytes());
                  byte[] byteDigest = md.digest();
                  int i;
                  StringBuffer buf = new StringBuffer("");
                  for (int offset = 0; offset < byteDigest.length; offset++) {
                      i = byteDigest[offset];
                      if (i < 0)
                          i += 256;
                      if (i < 16)
                          buf.append("0");
                      buf.append(Integer.toHexString(i));
                  }
                  // 32-bit encryption 
                  return buf.toString ();
                   // 16-bit encryption
       //             return buf.toString () the substring (. 8, 24);. 
              } The catch (NoSuchAlgorithmException E) {
                  e.printStackTrace ();
                  return null;
              }
          }
      
          public static void main(String[] args) {
              System.out.println(code("123456"));
          }
      }
    • In UserServiceImpl.javathe UserCheckread reference time pass method MD5Utils.code(password)can be implemented MD5encryption
  • Log interceptor
    • In order to prevent people know the contents of your project management can be easily blog landing page, so to add a logon interceptor, set user filter
    • In com.xxx.erb.admincase a new package BlogController:
      package com.skgxsn.blog_idea2017.web.admin;
      
      
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RequestMapping;
      
      @Controller
      @RequestMapping("/admin")
      public class BlogController {
      
          @GetMapping("/blog-list")
          public String blogList() {
              return "admin/blog-list";
          }
      }
    • In com.xxxthe new package under the package Interceptorpackage, build LoginInterceptor.java, WecConfig.javafile is used to set the specific implementation of interceptor landing:
      // LoginInterceptor.java
      package com.skgxsn.blog_idea2017.Interceptor;
      
      import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
      
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      
      public class LoginInterceptor extends HandlerInterceptorAdapter {
      
          @Override
          public boolean preHandle(HttpServletRequest request,
                                   HttpServletResponse response,
                                   Object handler) throws Exception {
      
              if (request.getSession().getAttribute("user") == null) {
                  response.sendRedirect("/admin");
                  return false;
              }
              return true;
          }
      }
      
      
      //WecConfig.java
      package com.skgxsn.blog_idea2017.Interceptor;
      
      import org.springframework.context.annotation.Configuration;
      import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
      import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
      
      @Configuration
      public class WebConfig extends WebMvcConfigurerAdapter {
      
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
              registry.addInterceptor ( new LoginInterceptor ())
                      .addPathPatterns("/admin/**")
                      .excludePathPatterns("/admin")
                      .excludePathPatterns("/admin/login");
          }
      }

       

 

Guess you like

Origin www.cnblogs.com/skygrass0531/p/12551250.html