• JWT技术实现用户token令牌管理(9月20号)


    JWT(JSON WEB TOKEN)

    未使用JWT之前:

            用户登录成功或返回user对象

            将用户信息存储在session

            在拦截器中取出session中的user对象,判断是否已经登陆,决定是否放行

    使用JWT之后:

            用户登陆成功后,根据指定的用户信息生成一个token令牌

            token令牌是根据指定的用户信息(可以是id,username,role等)加密得到的一个字符串

            这个token令牌会随着http响应返回给前端,前端进行存储token令牌

            在前端每次发起http请求的时候,都把这个token令牌携带在请求报文中

            在后端的拦截器中从http请求报文中取出这个token令牌,然后进行校验

            校验通过则放行,校验失败则拦截

    先校验后端是否能够成功返回信息

    测试结果:

     

     

     

     

    测试成功后就可以在Login.vue组件中完成登陆代码 

    1. <template>
    2. <el-dialog title="登录" :visible.sync="loginDialogVisible"
    3. :close-on-click-modal="false"
    4. :close-on-press-escape="false"
    5. :show-close="false" width="30%">
    6. <el-form :model="user" :rules="rules" ref="loginForm">
    7. <el-form-item label="用户名" prop="username">
    8. <el-input v-model="user.username" placeholder="请选择用户名">el-input>
    9. el-form-item>
    10. <el-form-item label="密码" prop="password">
    11. <el-input v-model="user.password" show-password placeholder="请选择密码">el-input>
    12. el-form-item>
    13. el-form>
    14. <div slot="footer" class="dialog-footer">
    15. <el-button type="primary" @click="login('loginForm')">登 录el-button>
    16. div>
    17. el-dialog>
    18. template>
    19. <script>
    20. export default {
    21. name: "Login",
    22. data(){
    23. return {
    24. user:{
    25. username:'',
    26. password:''
    27. },
    28. rules:{
    29. username: [
    30. { required: true, message: '请输入用户名', trigger: 'blur' }
    31. ],
    32. password: [
    33. { required: true, message: '请输入密码', trigger: 'blur' },
    34. { min: 4, max: 16, message: '长度在 4 到 16 个字符', trigger: 'blur' }
    35. ]
    36. },
    37. loginDialogVisible: true
    38. }
    39. },
    40. methods:{
    41. login(formName){
    42. this.$refs[formName].validate((valid) => {
    43. if (valid) {
    44. this.$http.post('/user/login', this.user).then((data) =>{
    45. localStorage.setItem('user', JSON.stringify(data))
    46. this.$router.push('/')
    47. })
    48. } else {
    49. return false;
    50. }
    51. });
    52. }
    53. }
    54. }
    55. script>
    56. <style scoped>
    57. style>

    在浏览器到login测试登陆

     

  • 相关阅读:
    大型医院容灾备份平台建设与应用实践
    嵌入式c语言
    【BOOST C++ 12 函数式编程】(1)Boost.Phoenix库
    linux系统调用拦截Centos7.6(二)のSSH连接
    【luogu AT2366】Prefix Median(DP)
    状态估计|基于 MMSE 的分析估计器的不确定电力系统分析(Matlab代码实现)
    二、深度测试(Z Test)
    SQL语句中过滤条件放在on和where子句中的区别和联系
    LeetCode_前缀和_滑动窗口_中等_930.和相同的二元子数组
    shutdown的各类参数及用法
  • 原文地址:https://blog.csdn.net/qq_59592117/article/details/126958934