Kotlin으로 Spring Boot 개발하기 - 로그인 기능, welcome 페이지

Yuri Lee·2020년 9월 21일
0

로그인 활성화

  • findByUserId 사용
  • session 활성화
  • welcome 페이지 만들기
package com.example.demo

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Controller
import org.springframework.ui.Model
import org.springframework.web.bind.annotation.*
import java.lang.Exception
import java.security.MessageDigest
import javax.servlet.http.HttpSession

@Controller
class HtmlController {

    @Autowired
    lateinit var repository:UserRepository // 나중에 초기화를 해준다?!

    @RequestMapping("/")
    fun index(model:Model) : String {
        model.addAttribute("title","home")
        return "index"
    }

    fun crypto(ss:String):String {
        val sha=MessageDigest.getInstance("SHA-256")
        val hexa = sha.digest(ss.toByteArray())
        val crypto_str=hexa.fold("",{str, it -> str + "%02x".format(it)})
        return crypto_str
    }
    @GetMapping("/{formType}")
    fun htmlForm(model: Model, @PathVariable formType:String) : String {

        var response : String=""

        if (formType.equals("sign")) {
            response="sign"
        }
        else if (formType.equals("login")) {
            response="login"
        }

        model.addAttribute("title", response)

        return response
    }

    @PostMapping("/sign")
    fun postSign(model: Model,
                 @RequestParam("id") userId:String,
                 @RequestParam("password") password:String) : String {

        try {
            val cryptoPass=crypto(password)

            repository.save(User(userId, cryptoPass))
        } catch (e:Exception) {
            e.printStackTrace()
        }
        model.addAttribute("title", "sign sucess")
        return "login"
    }

    @PostMapping("/login")
    fun postlogin(model: Model,
                  session: HttpSession,
                  @RequestParam("id") userId:String,
                  @RequestParam("password") password: String) : String{

        var pageName = ""

        try {
            val cryptoPass=crypto(password)
            val db_user = repository.findByUserId(userId)

            if (db_user != null) {
                val db_pass = db_user.password

                if(cryptoPass.equals(db_pass)) {
                    session.setAttribute("userId", db_user)
                    model.addAttribute("title", "welcome")
                    model.addAttribute("userId", userId)
                    pageName = "welcome"
                }
                else {
                    model.addAttribute("title","login")
                    pageName = "login"
                }
            }
        } catch (e:Exception) {
            e.printStackTrace()
        }
        return "welcome"
    }
}

Whitelabel Error Page
Mon Sep 21 17:09:47 KST 2020
There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'POST' not supported

에러발생 ..... 나중에 고치자 ..... ㅜ

오마이 가슈ㅣ..... welcome.html을 welcom.html으로 적어서 발생한 문제였음. 아오 ㅗㅗㅎㅎ


[Reference]

이 글은 유투버 kwangsung choi의 코틀린 스프링부트 강좌를 바탕으로 정리한 내용입니다.

profile
Step by step goes a long way ✨

0개의 댓글