登錄驗證源碼
1. 如何在jsp中實現用戶登錄驗證
1、新建TokenAction。
2. vue實現用戶登錄驗證 + 許可權驗證 + 動態路由(左側菜單欄)
本文介紹如何利用 Vue 技術棧(Vue2.6、vue-router、vuex、element-ui)實現用戶登錄驗證、許可權驗證以及動態路由功能(左側菜單欄)。首先,確保已安裝 nodejs(版本 14.15.1)並使用 npm 包管理器安裝 Vue(版本 4.5.12)。接下來,利用 Element-UI、nprogress 和 normalize.css 完成項目搭建,並通過 vue.config.js 文件進行項目配置。實現步驟如下:
1. 搭建項目環境:安裝 nodejs 和 vue,完成項目創建和初始化。
2. 引入依賴:安裝 Element-UI、nprogress、normalize.css,編寫 vue.config.js 文件以自定義項目配置。
3. 功能實現概述:在實現過程中,重點包括用戶登錄驗證、許可權驗證和動態路由構建,以及左側菜單欄的生成。實現思路分為以下幾個步驟:
1. 模擬用戶數據,實現登錄驗證和許可權驗證,後端返回用戶姓名、頭像、簡述以及 token(實際場景中,token 應從後端獲取),以及根據用戶角色動態生成路由。
2. 通過模擬數據實現用戶登錄,獲取許可權信息並存儲於 localStorage,然後跳轉至主頁。
3. 動態生成菜單欄:在 router 文件夾中創建 router.config.js 文件,實現路由守衛,確保頁面載入時動態渲染出菜單欄。
4. 用戶退出:在 headerTemp/index.vue 中實現退出功能,清除 localStorage 中的用戶信息,並跳轉至登錄頁面。
5. 動態路由管理:考慮到路由持久化問題,選擇使用 localStorage 來存儲用戶角色信息,確保瀏覽器刷新時菜單的正確顯示。關於 Vuex 的使用,由於其數據持久化特性在特定場景下可能不合適,本文選擇使用 localStorage 進行路由管理以確保數據的穩定性和一致性。
項目源碼和詳細代碼實現過程,可參考以下鏈接:
源碼地址(gitee): <a href="gitee.com/lemonote/vue2...
項目地址: <a href="dynamic.lemonotes.cn/#...
本文詳細解釋了如何結合 Vue 技術棧實現用戶登錄驗證、許可權驗證和動態路由功能,確保了左側菜單欄的生成和用戶操作的流暢性。在實際應用中,還需根據具體需求調整和優化代碼邏輯,以滿足不同場景下的功能需求。
如果您對文章內容有任何疑問或發現不正確的部分,歡迎在下方評論區指正。感謝您的閱讀和支持!
3. 網站中的驗證碼是怎麼做的,誰有源程序
源碼,保存為CodePhoto.asp,
在要插入驗證碼圖片的地方插入<img border="0" src="codephoto.asp" width="50" height="20">
生成的隨機驗證碼存在
Session("ValidCode")中,你只要把用戶輸入的驗證碼和Session("ValidCode")比較就行了。
<%
Call Com_CreatValidCode("ValidCode")
response.write vCodes
Sub Com_CreatValidCode(pSN)
' 禁止緩存
Response.Expires = -9999
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-ctrol","no-cache"
Response.ContentType = "Image/BMP"
Randomize
Dim i, ii, iii
Const cOdds = 2 ' 雜點出現的機率
Const cAmount = 36 ' 文字數量
Const cCode = ""
' 顏色的數據(字元,背景)
Dim vColorData(1)
vColorData(0) = ChrB(255) & ChrB(100) & ChrB(0) ' 藍0,綠0,紅0(黑色)
vColorData(1) = ChrB(255) & ChrB(255) & ChrB(255) ' 藍250,綠236,紅211(淺藍色)
' 隨機產生字元
Dim vCode(4), vCodes
For i = 0 To 3
vCode(i) = Int(Rnd * cAmount)
vCodes = vCodes & Mid(cCode, vCode(i) + 1, 1)
Next
Session("ValidCode") = vCodes '記錄入Session
' 字元的數據
Dim vNumberData(35)
vNumberData(0) = ""
vNumberData(1) = ""
vNumberData(2) = ""
vNumberData(3) = ""
vNumberData(4) = ""
vNumberData(5) = ""
vNumberData(6) = ""
vNumberData(7) = ""
vNumberData(8) = ""
vNumberData(9) = ""
vNumberData(10) = ""
vNumberData(11) = ""
vNumberData(12) = ""
vNumberData(13) = ""
vNumberData(14) = ""
vNumberData(15) = ""
vNumberData(16) = ""
vNumberData(17) = ""
vNumberData(18) = "1100000111"
vNumberData(19) = "1110000011"
vNumberData(20) = ""
vNumberData(21) = "1000111111"
vNumberData(22) = ""
vNumberData(23) = ""
vNumberData(24) = ""
vNumberData(25) = ""
vNumberData(26) = ""
vNumberData(27) = ""
vNumberData(28) = ""
vNumberData(29) = ""
vNumberData(30) = ""
vNumberData(31) = ""
vNumberData(32) = ""
vNumberData(33) = ""
vNumberData(34) = ""
vNumberData(35) = ""
' 輸出圖像文件頭
Response.BinaryWrite ChrB(66) & ChrB(77) & ChrB(230) & ChrB(4) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
ChrB(0) & ChrB(0) & ChrB(54) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) &_
ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(10) & ChrB(0) &_
ChrB(0) & ChrB(0) & ChrB(1) & ChrB(0)
' 輸出圖像信息頭
Response.BinaryWrite ChrB(24) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(176) & ChrB(4) &_
ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) & ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) &_
ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
ChrB(0) & ChrB(0)
For i = 9 To 0 Step -1 ' 歷經所有行
For ii = 0 To 3 ' 歷經所有字
For iii = 1 To 10 ' 歷經所有像素
' 逐行、逐字、逐像素地輸出圖像數據
If Rnd * 100 + 1 < cOdds Then ' 隨機生成雜點
Response.BinaryWrite vColorData(0)
Else
Response.BinaryWrite vColorData(Mid(vNumberData(vCode(ii)), i * 10 + iii, 1))
End If
Next
Next
Next
End Sub
%>
4. jsp登陸界面源代碼
1、login.jsp文件
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登錄頁面</title>
</head>
<body>
<form name="loginForm" method="post" action="judgeUser.jsp">
<table>
<tr>
<td>用戶名:<input type="text" name="userName" id="userName"></td>
</tr>
<tr>
<td>密碼:<input type="password" name="password" id="password"></td>
</tr>
<tr>
<td><input type="submit" value="登錄" style="background-color:pink"> <input
type="reset" value="重置" style="background-color:red"></td>
</tr>
</table>
</form>
</body>
</html>
2、judge.jsp文件
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>身份驗證</title>
</head>
<body>
<%
request.setCharacterEncoding("GB18030");
String name = request.getParameter("userName");
String password = request.getParameter("password");
if(name.equals("abc")&& password.equals("123")) {
3、afterLogin.jsp文件
%>
<jsp:forward page="afterLogin.jsp">
<jsp:param name="userName" value="<%=name%>"/>
</jsp:forward>
<%
}
else {
%>
<jsp:forward page="login.jsp"/>
<%
}
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登錄成功</title>
</head>
<body>
<%
request.setCharacterEncoding("GB18030");
String name = request.getParameter("userName");
out.println("歡迎你:" + name);
%>
</body>
</html>
(4)登錄驗證源碼擴展閱讀:
java web登錄界面源代碼:
1、Data_uil.java文件
import java.sql.*;
public class Data_uil
{
public Connection getConnection()
{
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch(ClassNotFoundException e)
{
e.printStackTrace();
}
String user="***";
String password="***";
String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=***";
Connection con=null;
try{
con=DriverManager.getConnection(url,user,password);
}catch(SQLException e)
{
e.printStackTrace();
}
return con;
}
public String selectPassword(String username)
{
Connection connection=getConnection();
String sql="select *from login where username=?";
PreparedStatement preparedStatement=null;
ResultSet result=null;
String password=null;
try{
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1,username);
result=preparedStatement.executeQuery();//可執行的 查詢
if(result.next())
password=result.getString("password");
}catch(SQLException e){
e.printStackTrace();
}finally
{
close(preparedStatement);
close(result);
close(connection);
}
System.out.println("找到的資料庫密碼為:"+password);
return password;
}
public void close (Connection con)
{
try{
if(con!=null)
{
con.close();
}
}catch(SQLException e)
{
e.printStackTrace();
}
}
public void close (PreparedStatement preparedStatement)
{
try{
if(preparedStatement!=null)
{
preparedStatement.close();
}
}catch(SQLException e)
{
e.printStackTrace();
}
}
public void close(ResultSet resultSet)
{
try{
if(resultSet!=null)
{
resultSet.close();
}
}catch(SQLException e)
{
e.printStackTrace();
}
}
}
2、login_check.jsp:文件
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>驗證用戶密碼</title>
</head>
<body>
<jsp:useBean id="util" class="util.Data_uil" scope="page" />
<%
String username=(String)request.getParameter("username");
String password=(String)request.getParameter("password");
if(username==null||"".equals(username))
{
out.print("<script language='javaScript'> alert('用戶名不能為空');</script>");
response.setHeader("refresh", "0;url=user_login.jsp");
}
else
{
System.out.println("輸入的用戶名:"+username);
String passwordInDataBase=util.selectPassword(username);
System.out.println("密碼:"+passwordInDataBase);
if(passwordInDataBase==null||"".equals(passwordInDataBase))
{
out.print("<script language='javaScript'> alert('用戶名不存在');</script>");
response.setHeader("refresh", "0;url=user_login.jsp");
}
else if(passwordInDataBase.equals(password))
{
out.print("<script language='javaScript'> alert('登錄成功');</script>");
response.setHeader("refresh", "0;url=loginSucces.jsp");
}
else
{
out.print("<script language='javaScript'> alert('密碼錯誤');</script>");
response.setHeader("refresh", "0;url=user_login.jsp");
}
}
%>
</body>
</html>
3、loginSucces.jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<hr size="10" width="26%" align="left" color="green">
<font size="6" color="red" >登錄成功 </font>
<hr size="10" width="26%" align="left" color="green">
</body>
</html>
4、user_login.jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>登錄界面</title>
</head>
<body background="C:Userswin8workspaceLoginimage\_10.jpg" >
<center>
<br><br><br><br><br><br>
<h1 style="color:yellow">Login</h1>
<br>
<form name="loginForm" action="login_check.jsp" method="post">
<table Border="0" >
<tr >
<td>賬號</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密碼</td>
<td><input type="password" name="password">
</td>
</tr>
</table>
<br>
<input type="submit" value="登錄" style="color:#BC8F8F">
</form>
</center>
</body>
</html>
5. 使用Python實現簡易的用戶登錄驗證功能
本文將介紹如何利用Python語言進行程序設計,實現一個簡單的用戶登錄驗證功能。
該功能支持用戶輸入由字母和數字混合組成的用戶名和密碼,並通過循環提示用戶輸入,直到憑證正確為止。所有憑證信息將被存儲在一個字典中,以便進行匹配驗證。
此外,加入了驗證碼機制,要求用戶輸入一個由0至9組成的四位數。無論登錄嘗試成功與否,程序都會立即給出反饋,確保用戶能夠及時了解自己的登錄狀態。
用戶登錄驗證的邏輯流程圖源碼運行結果代碼分析一、字典存放用戶信息
字典是一種可變的數據結構,用於存儲鍵值對,用{ }標識。它是一個無序集合,類似於JSON對象的存儲格式。
二、驗證碼生成函數
該函數旨在生成一個四位數的驗證碼。這個驗證碼由1000到9999之間的隨機四位數組成。
具體來說,generate_verification_code函數每次調用時都會返回一個不同的四位隨機驗證碼字元串。這個驗證碼可以用作登錄驗證的一部分,以確保嘗試登錄的用戶是人類而非自動化腳本。
三、格式化字元串字面量
在Python中,f-string是一種字元串字面量,允許在字元串中嵌入表達式,並使用大括弧{}引用變數或表達式。這種方式在Python 3.6及以上版本中可用,是一種簡單便捷的字元串格式化方法。
print(f"驗證碼:{verification_code}")的作用是將verification_code變數的值嵌入到字元串中,並列印出來。這里的f表示這是一個格式化字元串,而{verification_code}告訴Python在這個位置插入verification_code變數的值。
當這行代碼執行時,它會生成一個包含隨機生成的驗證碼的字元串,並輸出到控制台。
四、"main"函數與程序入口
Python程序沒有統一的入口,但可以使用if __name__ == "__main__":結構確定模塊是被直接運行還是被導入到另一個模塊中。這里的__name__是Python的一個內置變數,代表當前模塊的名稱。
if __name__ == "__main__":塊中的代碼只有在模塊被直接運行時才會執行。這通常用於定義主程序入口點,即當模塊作為腳本運行時應該執行的操作。
這段代碼意味著如果這個模塊是作為主程序運行的,那麼user_login()函數將被調用。這通常用於編寫可復用的代碼,既可以作為庫導入到其他項目中,也可以作為獨立的腳本運行。