You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							146 lines
						
					
					
						
							6.3 KiB
						
					
					
				
			
		
		
	
	
							146 lines
						
					
					
						
							6.3 KiB
						
					
					
				@@master_page.html | 
						|
<div id="apibox" class="col-lg-12"> | 
						|
    <div class="card"> | 
						|
        <div class="card-header"><h4>授权说明</h4></div> | 
						|
        <div class="card-body"> | 
						|
            <div class="form-group"> | 
						|
                <div class="alert alert-success">一、用户表不存需要创建表</div> | 
						|
                <p>  1、Json文件禁用授权 </p> | 
						|
                <p>  2、实体管理创建【用户实体】,然后点同步生成【用户表】 </p> | 
						|
                <p>  3、创建【用户插入接口】 </p> | 
						|
                <p>  4、插入用户名密码(密码前端加密好) </p> | 
						|
                <div class="alert alert-success">二、用户表存在只需四步</div> | 
						|
                <p>  1、完成json配置启用授权 </p> | 
						|
                <p>  2、输入用户名密码获取Token (密码前端加密好) </p> | 
						|
                <p>  3、保存Token </p> | 
						|
                <p>  4、其他页面能正常访问说明授权成功,未成功接口都是返回401 </p> | 
						|
            </div> | 
						|
        </div> | 
						|
    </div> | 
						|
    <div class="card"> | 
						|
        <div class="card-header"><h4>保存登录</h4><code>【支持所有JWT】</code></div> | 
						|
        <div class="card-body"> | 
						|
            <div class="form-group"> | 
						|
                <label>ToKen</label> | 
						|
                <input v-model="txtToken" id="txtToken" class="form-control" type="text" name="role-input" placeholder="保存后请求都会加上Token"> | 
						|
            </div> | 
						|
 | 
						|
            <div class="form-group"> | 
						|
                <button type="button" @click="submitToken" class="btn btn-primary ajax-post" target-form="add-form">确 定</button> | 
						|
            </div> | 
						|
        </div> | 
						|
    </div> | 
						|
    <div class="card"> | 
						|
        <div class="card-header"><h4>获取Token</h4> <code>【仅支持自带JWT】</code></div> | 
						|
        <div class="card-body"> | 
						|
 | 
						|
            <div class="form-group"> | 
						|
                <label>用户名</label> | 
						|
                <input v-model="userName" class="form-control" type="text" name="role-input" placeholder="用户名"> | 
						|
            </div> | 
						|
            <div class="form-group"> | 
						|
                <label>密码</label> | 
						|
                <input id="txtpassword" v-model="password" class="form-control" type="text" name="role-input" placeholder="前端加密好的密码"> | 
						|
                <button class="btn btn-xs btn-primary m-t-10" @click="MD5">MD5</button> | 
						|
            </div> | 
						|
            <div class="form-group"> | 
						|
                <label>结果:</label> | 
						|
                <textarea class="form-control">{{result}}</textarea> | 
						|
            </div> | 
						|
            <div class="form-group"> | 
						|
                <button type="button" @click="getToken" class="btn btn-primary ajax-post" target-form="add-form">确 定</button> | 
						|
            </div> | 
						|
        </div> | 
						|
    </div> | 
						|
    <div class="card"> | 
						|
        <div class="card-header"><h4>测试授权 <code>【仅支持自带JWT】</code></h4></div> | 
						|
        <div class="card-body"> | 
						|
            <div class="form-group"> | 
						|
                <div class="alert alert-success">获取JWT信息</div> | 
						|
                <div>Url: /api/rezero/getuserinfo </div> | 
						|
                <button class="btn btn-primary m-t-10" @click="getUserInfo">确定</button> | 
						|
            </div> | 
						|
            <div class="form-group"> | 
						|
                <label>结果:</label> | 
						|
                <textarea rows="5" class="form-control">{{jwtInfo}}</textarea> | 
						|
                <code>注意:如果成功,内置接口访问不了可能是 DisableSystemInterface 禁用了 </code> | 
						|
            </div> | 
						|
        </div> | 
						|
    </div> | 
						|
</div> | 
						|
<script src="js/crypto/core.js"></script> | 
						|
<script src="js/crypto/md5.js"></script> | 
						|
<script>  | 
						|
    var vueObj = new Vue({ | 
						|
        el: '#apibox', | 
						|
        data: { | 
						|
            data: null, | 
						|
            error: null, | 
						|
            txtToken: null, | 
						|
            userName: null, | 
						|
            password: null, | 
						|
            result: null, | 
						|
            jwtInfo:null, | 
						|
            hashedPasswords: []   | 
						|
        }, | 
						|
        mounted() { | 
						|
            if (jwHeader && jwHeader.headers) { | 
						|
                this.txtToken = (jwHeader.headers.Authorization + "") | 
						|
                    .replace("Bearer null", "Bearer ") | 
						|
                    .replace("Bearer ", ""); | 
						|
            } | 
						|
        }, | 
						|
        methods: { | 
						|
            submitToken: function () { | 
						|
                if (!this.txtToken) { | 
						|
                    tools.alert("token不能为空"); | 
						|
                } else { | 
						|
                    localStorage["@@authorizationLocalStorageName"] = this.txtToken; | 
						|
                    tools.alert("设置成功"); | 
						|
                    setTimeout(function () { | 
						|
                        window.location.href = "/rezero/Authorization.html"; | 
						|
                    }, 1000); | 
						|
                } | 
						|
            }, | 
						|
            getToken: function () { | 
						|
                if (!this.userName || !this.password) { | 
						|
                    tools.alert("用户名或者密码不能为空"); | 
						|
                } else { | 
						|
                    axios.post("/api/rezero/token?supportCustomDto=true", { userName: this.userName, password: this.password+"" }, jwHeader) | 
						|
                        .then(response => { | 
						|
                            this.error = null; | 
						|
                            this.result = response.data; | 
						|
                        }) | 
						|
                        .catch(error => { | 
						|
                            this.error = error.message; | 
						|
                            this.data = null; | 
						|
                        }); | 
						|
                } | 
						|
            }, | 
						|
            MD5: function () | 
						|
            { | 
						|
                if (this.password) { | 
						|
                    // No need to hash if password is already hashed | 
						|
                    var existingHash = this.hashedPasswords.find(entry => entry.password === this.password); | 
						|
                    if (!existingHash) { | 
						|
                        var hashedPassword = CryptoJS.MD5(this.password); | 
						|
                        this.password = hashedPassword; | 
						|
                        this.hashedPasswords.push({ password: this.password, hashedPassword }); | 
						|
                    } | 
						|
                } | 
						|
            }, | 
						|
            getUserInfo: function () | 
						|
            { | 
						|
                axios.get("/api/rezero/getuserinfo", jwHeader) | 
						|
                           .then(response => { | 
						|
                                        this.error = null; | 
						|
                                        this.jwtInfo = response.data; | 
						|
                                    }) | 
						|
                                    .catch(error => { | 
						|
                               this.error = error.message; | 
						|
                               this.data = null; | 
						|
                    }); | 
						|
            } | 
						|
        } | 
						|
    }); | 
						|
</script> |