登录验证源码
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()函数将被调用。这通常用于编写可复用的代码,既可以作为库导入到其他项目中,也可以作为独立的脚本运行。