一、【身份认证—Forms】
通用准备:
Web.config中新增
<authentication mode="Forms">
<forms loginUrl="/Acct/index" timeout="2000" cookieless="UseCookies" name="LoginCookieName"></forms>
<!--
loginUrl=登录认证页面。/{Controller}/{Action}
loginCookieName=cookie存储的变量名称
-->
</authentication>
在需要认证的Controller或Action上增加注解[Authorize]。不需要认证的Action上增加注解[AllowAnonymous]。
1—简单型
private bool chkLogin(string name,string pwd)
{
bool blnResult;
//方法—1:
//演示验证用户及密码,实际从数据库比对
if(string.Compare(name,"super")==0 && pwd=="123" ){
//用户写入Cookie,为密文
//行参2表示:变量时效性{true—持久式}
FormsAuthentication.SetAuthCookie(name, true);
blnResult = true;
}
//返回结果
return blnResult;
}
2—功能性
private bool chkLogin(string name, string pwd)
{
bool blnResult=false ;
if(string.Compare(name,"super")==0 && pwd=="123"){
var authTicket = new FormsAuthenticationTicket(
1, //——版本
name,
DateTime.Now, //——创建
DateTime.Now.AddMinutes(20), //——失效时期
true,
"7" //Role——角色。userData区域字段
);
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
var ticketCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
ticketCookie.HttpOnly = true; //使用SSL加密传输
//ticketCookie.Secure = FormsAuthentication.RequireSSL;
//ticketCookie.Domain = FormsAuthentication.CookieDomain;
ticketCookie.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ticketCookie);
blnResult = true;
}
return blnResult;
}
3—名称说明
FormsAuthentication.FormsCookieName 属性(命名空间:System.Web.Security)
获取用于存储Forms身份认证票据的Cookie名称。 默认值是“.ASPXAUTH”。
修改默认值,通过web.config
<authentication mode="Forms">
<forms loginUrl="member_login.aspx"
cookieless="UseCookies"
name=".ASPXFORMSAUTH" />
</authentication>
二、版本信息
MVC项目版本信息存储于AssemblyInfo.cs文件中。如下图
拥有2个版本字段:程序集版本、文件版本
1—前端获取MVC后端版本
在cshtml可用于校验后端逻辑是否为指定版本(当前环境:MVC-4,razor语法)。在页面中增加一个<p>,属性为不显示,可在chrome右键菜单中“查看网页源代码”看到值。
<!-- 校验:版本 -->
<p style="visibility:hidden">
MVC_Ver{
<!-- 程序集版本号 -->
[Assembly]: @System.Reflection.Assembly.GetAssembly(typeof(OpenAuth.Mvc.Models.AuthenticateAttribute)).GetName().Version.ToString()
<!-- 文件版本号 -->
@{
var fver = (AssemblyFileVersionAttribute)Assembly.GetAssembly(typeof(OpenAuth.Mvc.Models.AuthenticateAttribute)).GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true)[0];
@: , [File]: @fver.Version.ToString()
}
}
</p>
说明:OpenAuth.Mvc.Models.AuthenticateAttribute为项目中models文件夹中任一类名称。
前端浏览器(view-source:)中查看效果如下: