Form验证之简单应用

前端学习日记(五):html中progress、output以及表单验证和form属性;meter、datalist、其他标签的简单应用 VS code 表单中progress、output以及表单验证和form属性;meter、datalist、其他标签的简单应用 阅读详情

1,创建四个文件夹 Admin AdminFolder,DataClass,UserFolder。

Admin:登录以及注册页面

AdminFolder:放入拥有Admin权限的页面

UserFolder:放入拥有User权限的页面

DataClass:Serialize.cs  序列化以及反序列化

                 LoginInfo.cs:存入登录信息

                 BasePage.cs  每个页面所要继承取值的类

2,创建一些Web.config

AdminFolder下的config:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</configuration>


roles为Admin,如果没有权限,拒绝一切用户。

UserFolder同理。

根目录下Config:

<authentication mode="Forms">
            <forms loginUrl="Admin/Login.aspx" timeout="20" path="/" protection="All" />
        </authentication>

    <location path="Admin/Register.aspx">
        <system.web>
            <authorization>
                <allow users="*"/>
            </authorization>
        </system.web>
    </location>


 

location写为regist.aspx,代表不限制注册页用户。

loginUrl:默认登录页面。

3,一些代码:

BasePage.cs:

public class BasePage:Page
    {
        public LoginInfo LoginUser
        {
            get
            {
                //从票据中返回UserData,并反序列化为对象
                string strUser = ((FormsIdentity)this.Context.User.Identity).Ticket.UserData;
                return Serialize.DnSerializeFun(strUser);
            }
        }
    }


LoginInfo.cs:

[Serializable]
    public class LoginInfo
    {
        public int id { get; set; }
        public string Name { get; set; }
        public DateTime LoginTime { get; set; }
        public string Roles { get; set; }
    }


 

Serializable代表可被序列化。

Serialize.cs:

//对象序列化为字符串
        public string SerializeFun(LoginInfo Li)
        {
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            bf.Serialize(ms, Li);
            byte[] objbyte = ms.ToArray();
            return Convert.ToBase64String(objbyte, 0, objbyte.Length);
        }
        //字符串序列化为对象
        public  static LoginInfo DnSerializeFun(string SerializeStr)
        {
            byte[] byt = Convert.FromBase64String(SerializeStr);
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream(byt, 0, byt.Length);
            return bf.Deserialize(ms) as LoginInfo;           
        }


Global.asax:

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
        {
            if (this.Context.User != null)
            {
                if (this.Context.User.Identity.IsAuthenticated)
                {
                    if (this.Context.User.Identity is FormsIdentity)
                    {
                        string strUser = ((FormsIdentity)this.Context.User.Identity).Ticket.UserData;

                        string[] roles = DataClass.Serialize.DnSerializeFun(strUser).Roles.Split(',');

                        this.Context.User = new GenericPrincipal(this.Context.User.Identity, roles);
                    }
                }
            }
        }


 

GenericPrincipal:用户属于哪个权限

两种登录方法:

//自动设置Ticket
        private void AutoLogin()
        {
            FormsAuthentication.SetAuthCookie(TextBox1.Text, false);
            Response.Redirect("Main.aspx"); 

        }
        //手动设置Ticket
        private void TicketLogin()
        {
            LoginInfo dl = new LoginInfo();
            Serialize sr = new Serialize();

            if (TextBox1.Text == "123" && TextBox2.Text == "123")
            {
                //LoginInfo赋值
                dl.id = 1;
                dl.Name = TextBox1.Text;
                dl.LoginTime = DateTime.Now;

                //判断什么Roles,用,分开
                dl.Roles = "User,Admin";
                //序列化LoginInfo
                string SeStr = sr.SerializeFun(dl);

                //定义ticket
                FormsAuthenticationTicket ft = new FormsAuthenticationTicket(1, "Admin", DateTime.Now, DateTime.Now.AddMinutes(20), false, SeStr);

                //加密ticket
                string strTicket = FormsAuthentication.Encrypt(ft);

                //使用userdata保存cookie
                HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, strTicket);
                cookie.Expires = ft.Expiration;
                Response.Cookies.Add(cookie);
                Response.Redirect("../AdminFolder/AdminPage.aspx");
            }
            else
            {
                Response.Write("密码错误");
            }
        }


页面取值:

public partial class UserPage : DataClass.BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(LoginUser.Roles);
        }
    }


 

WEB应用中的身份验证(2)--Form身份验证Form-based Authentication 网上有很多关于此类文章,但是有很多文章将的含糊不清,让人看了很是郁闷,更有甚者竟然把没有测试的文章也帖出来,真不知道这些人怎么想的。。。哎~!废话少说,让我们开始把~~!这些话上次已经说完了^_^现在开始我们的Form-based Authentication吧,其实和BASIC基本上完全一样,就是拷贝~要搭建整个流程需要四个阶段:一、建立测试用数据库        我们这里用My 阅读详情

相关推荐

YOLO模型使用jupyterlab的方式进行预测/推理(示例)

首先相信很多使用过python的人都或多或少地了解过这个应用。是一个开源Web应用程序,可让用户创建和共享包含实时代码、公式、可视化和叙述文本的文档。用途包括:数据清理和转换、数值模拟、统计建模、等等。而Jupyter Lab则是Jupyter的下一代笔记本界面。是一个基于Web的交互式开发环境,用于Jupyter notebook、代码和数据。非常灵活,可支持数据科学、科学计算和机器学习领域的广泛工作。是可扩展和模块化的,其可编写插件来添加新组件并与现有组件相集成。

ocean00008899的博客 902

使用 React-Hook-Form 让你的表单天生强大

没有人喜欢创建和重新创建带有验证的复杂表单,包括React开发人员。 在React中构建表单时,必须使用一个表单库,该库提供了许多方便的工具,而且不需要太多代码。 基于实用和简单这两个标准,应用程序最理想的React表单库是 React-hook-form 。 让我们看看如何在你自己的项目中使用 React-hook-form 来为你的React应用程序构建丰富的、有特色的表单。 安装 让我们来讨论一个典型的用例:一个用户注册到我们的应用程序。 对于我们的注册表单,我们将为任何新用户的用户名、密码和电子邮.

前端进阶之路 | 中大厂、外企、国企内推 | 面试培训 | 简历修改 1万+

Faster Planner——Kinodynamic Astar详解

实际成本和启发式成本 实际成本 Actual Cost   每条轨迹的真实代价函数定义如下: J(T)=∫0T∥u(t)∥2dt+ρT \mathcal{J}(T)=\int_{0}^{T}\|\mathbf{u}(t)\|^{2} d t+\rho T J(T)=∫0T​∥u(t)∥2dt+ρT 离散形式下: 启发成本 Heuristic Cost pμ∗(t)=16αμt3+12βμt2+vμc+pμc=pμc+vμc+T2∗((2∗vμc−2∗vμg)/(2∗T)−(6∗pμc−6∗pμg+6∗T∗v

漫长IT路 4835

修改配置文件,轻松搞定Form验证问题

当我们用Form验证来实现我们的程序时,我们可以写出简单、快捷、方便的代码实现强大的功能,如果只是给程序加上Form验证,配置文件改起来会很简单,只需要给配置文件加上 “”,但是如果我们要在web程序中完成注册,则要把注册页面暴露给广大匿名用户,这个时候需要如何来做呢?其实这个问题很简单,但是网上并没有这方面的例子,或者有这方面的,找起来比较麻烦!我们只需要在“”标签下面加上如下语句:

东方之星的技术社区 998

《AFSim 2.9中文参考手册》

本栏目将对《AFSim 2.9中文参考手册》进行持续更新,欢迎关注交流!对本文或者AFSIM相关内容感兴趣的朋友,可私心联系作者。《AFSim 2.9中文参考手册》内容概览。

henggesim的博客 1万+

innovus 命令每日精要 | 掌控Innovus布线的利器——setNanoRouteMode详解

在数字IC后端设计的复杂世界里,布线优化是至关重要的一步。今天,我来给大家深入讲解Innovus工具中setNanoRouteMode命令的精妙之处,让你轻松驾驭布线策略,提升设计质量。setNanoRouteMode是Innovus中用于配置NanoRoute绕线行为的关键命令。通过其丰富的参数,你可以精细控制布局后阶段的绕线策略、信号完整性优化、工艺适配及设计规则修复等流程。下面,我将按功能分类总结其核心选项,并针对不同场景给出建议。

weixin_50820814的博客 3530

推荐开源项目:Express Form - 轻松实现数据过滤与验证的中间件

推荐开源项目:Express Form - 轻松实现数据过滤与验证的中间件 项目介绍 Express Form 是一个针对 Express 框架的应用级中间件,它提供了数据过滤和验证的功能。通过简单的配置,开发者可以在路由处理函数中方便地对请求中的数据进行清洗和验证,确保应用的数据安全。 项目技术分析 Express Form 的核心是一个返回 Express 路由中间件的函数,这个中间件接收一系...

gitblog_00066的博客 370

从4A架构的角度出来 帮我分析一下:数字化转型深水区:企业架构如何成为价值重构的核心引擎?

4A 架构的本质是构建企业的数字神经系统,通过业务感知、数据传输、决策执行、技术支撑的闭环,实现从效率提升到生态重构的质变。正如华为通过该架构实现全球研发资源统一调度,某零售集团借此打造线上线下融合的新零售体系,当业务、数据、应用、技术四个维度形成共振时,企业将获得持续进化的数字免疫力,在不确定的市场环境中保持韧性生长。这一过程不仅需要技术工具的升级,更依赖组织文化的变革 —— 从 “部门墙” 到 “能力网” 的转型,才是数字化转型深水区的终极挑战。

金牌架构师 1046

formik 简单表单操作加验证

官方文档 formik 表单简单操作1.简单结构:2.form对象里边有数组用3.ArrayHelper:有什么复杂操作就用arrayHelper去处理:4.引用全局变量: 1.简单结构: <Formik initialValues={initialValues} onSubmit={handleSubmit} validationSchema={SignupSchema} validateOnChange={true} validateOn

花开富贵的博客 1285

ONVIF协议简介与协议测试工具使用详解

Onvif协议及协议测试工具使用详解

dvlinker的技术专栏 3万+

android 14.0 控制wifi启用禁用功能实现

在14.0的产品rom定制化开发中,在产品开发中,对于功能的开发的功能也是挺多的,而在对于wifi的功能定制需求,有要求需要通过系统属性来控制wifi开关是否可以打开 来控制是否可以连接wifi,打开控制wifi的功能,接下来分析wifi的开启流程来实现该功能的实现

安卓兼职framework和app工程师的博客 1771

推荐使用React Hook Form:高效、灵活的表单验证解决方案

推荐使用React Hook Form:高效、灵活的表单验证解决方案 【免费下载链接】react-hook-form react-hook-form/react-hook-form: 是一个基于 React.js 的前端表单库,用于处理表单数据和验证。该项目提供了一套简单易用的 API 和组件,可以方便地实现表单数据的收...

gitblog_00062的博客 693

SpringBoot中使用FastJson解析Json数据

场景 1.SpringBoot默认配置的是Jackson。 2.项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/35688 实现 引入fastJson的依赖 <!-- fastjson的依赖 --> <dependency> <groupId>com.alibab...

BADAO_LIUMANG_QIZHI的博客 4140

推荐使用form_field_validator:Flutter表单字段验证利器

推荐使用form_field_validator:Flutter表单字段验证利器 项目介绍 form_field_validator 是一个简单易用的Flutter表单字段验证库,旨在为开发者提供常见的验证选项。无论是简单的邮箱验证,还是复杂的密码规则,form_field_validator 都能轻松应对,让你的表单验证变得简单而高效。 项目技术分析 form_field_validator 基...

gitblog_01040的博客 531

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

推荐文章:react-form-with-constraints - 简单高效的React表单验证库

推荐文章:react-form-with-constraints - 简单高效的React表单验证库 项目介绍 react-form-with-constraints 是一个为React设计的简单表单验证库。它提供了一个最小化的API和轻量级的实现,使得表单验证变得既直观又高效。该库支持HTML5表单验证特性,并允许用户自定义错误消息和约束条件,适用于各种复杂的表单验证需求。 项目技术分析 rea...

gitblog_00800的博客 1023

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

修改 jquery.validate.js 支持非form标签

尝试使用markdown来写一篇blog,啦啦啦 源代码传送门:github 在特殊情况下我们使用jquery.validate.js对用户输入的内容做验证的时候,表单并不是一定包含在form之中,有可能是一个div弹层,有可能是嵌套在form里面的一个div,这个时候官方的validate就不能很好的支持了。对此,在官方的源代码基础上做小小的改动,就能兼容原有form方式,也能使用于非for...

weixin_30563319的博客 119

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

基于Django Form源码开发自定义Form组件

import copy import re class ValidateError(Exception): def __init__(self, detail): self.detail = detail # ###################### 插件 class TextInput(object): def __str__(sel...

weixin_30545285的博客 105

Validator验证框架

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33736832的博客 212

form表单的多种提交方式及提交前验证

以下是本人总结处来的一些form的提交方式,网上还有别的提交方式,这里我总结了大小分为7类,其实就是三类的提交方式,若有哪里不对的,还请评论指出来,大家一起学习学习 1、无任何验证提交(最普通的提交) 该方式不提供任何的验证方式,当我们点击提交时(提交的前提一定是 <input> 的type="submit"或者加粗样式<button>的type=“submit”) for...

qq_42128262的博客 2万+

JavaScript form对象,表单简单验证

一、form对象的属性: name:获取表单的名称,该name一般给JS使用 method:表单的提交方式   (get:不安全,数据量较小,不能上传附件)(post:相对安全 海量数据 能上传附件) action:表单数据的处理程序 一般是PHP文件 enctype:表单数据的编码方式(加密) application/x-www-form-urlencoded  默认  

Vipwxs的博客 1473

sharepoint实现简单的form验证

1.配置用于存放form验证的登陆用户数据库:这一步主要是要用命令窗口运行aspnet_regsql,"C:/Windows/Microsoft.NET/Framework/v2.0.50727/aspnet_regsql.exe"。然后在弹出的asp.net sql server 安装向导中配置好数据库。 2.向数据库中添加账户:这里可以用vs2005或者vs2008创建一个

我的专栏 1027

[Form Builder]Form中的validate验证事件

转:http://yedward.net/?id=70 Form的validate行为可以由一个总的form级别的validation属性来控制,可以通过set_form_property来设置成PROPERTY_TRUE 和 PROPERTY_FALSE。当程序的焦点离开当前validation_unit(验证单元)时候,就会触发该validation_unit的validate事件...

deyu2539的博客 1115

easyui datagrid

JQUERY 1.7.1    easyui-1.2.5 前台: $(document).ready(function () { //绑定datagrid $('#test').datagrid({ title: 'EasyUi', //为title添加

Apocalypse 3967
上一篇: ArrayList绑定GridView
下一篇: Route之简单应用
Apocalypse
博客等级 码龄18年 3粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值