.net MVC中使用forms驗(yàn)證詳解
.net MVC中使用forms驗(yàn)證,供大家參考,具體內(nèi)容如下
文件夾的分部是這樣子的

首先在Web.config中設(shè)置
authentication和authorization 節(jié)點(diǎn)
<system.web> <authentication mode="Forms"> <forms loginUrl="~/Login/Index" timeout="2880" defaultUrl="~/Home/Index"/> </authentication> <anonymousIdentification enabled="true"/> <authorization> <deny users="?"/> <!--拒絕匿名訪問(wèn)--> </authorization> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <httpModules> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> </httpModules> </system.web>
如果在Login文件夾還有不需要匿名訪問(wèn),或者在LoginController中除了登陸還有方法可以匿名訪問(wèn),
那么我們需要在加上這一個(gè)節(jié)點(diǎn)
<location path="Login"> <!--這里的意思就是LoginController下的方法可以匿名訪問(wèn)-->
<system.web>
<authorization>
<allow users="*" /> <!--允許匿名訪問(wèn)-->
</authorization>
</system.web>
</location>

登陸的方法貼出一部分代碼,僅供參考
public bool ValidateUser(LoginVO model)
{
string encodePassword = MD5(model.PassWord);//加密
string sql =
"select * from User_Users where (UserName=@UserName or JobNumber=@JobNumber) and PassWord=@PassWord";
var user = Context.Data.Query<UsersPO>(sql,
new {UserName = model.LoginName, JobNumber = model.LoginName, PassWord = encodePassword}).SingleOrDefault();
if (user == null) return false;
DateTime expiration = model.IsRememberLogin //是否記住密碼
? DateTime.Now.AddDays(14)
: DateTime.Now.Add(FormsAuthentication.Timeout);
var ticket=new FormsAuthenticationTicket(
1,//指定版本號(hào):可隨意指定
user.UserName,//登錄用戶名:對(duì)應(yīng) Web.config 中 <allow users="Admin" … /> 的 users 屬性
DateTime.Now, //發(fā)布時(shí)間
expiration,//失效時(shí)間
true,//是否為持久 Cookie
user.UserId.ToString(), //用戶數(shù)據(jù):可用 ((System.Web.Security.FormsIdentity)(HttpContext.Current.User.Identity)).Ticket.UserData 獲取
FormsAuthentication.FormsCookiePath //指定 Cookie 為 Web.config 中 <forms path="/" … /> path 屬性,不指定則默認(rèn)為“/”
);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
if (HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
HttpContext.Current.Request.Cookies.Remove(FormsAuthentication.FormsCookieName);
}
var loginIdentify=new HttpCookie(FormsAuthentication.FormsCookieName);
if (model.IsRememberLogin)
{
loginIdentify.Expires = DateTime.Now.AddDays(7);
}
loginIdentify.Value = encryptedTicket;
HttpContext.Current.Response.AppendCookie(loginIdentify);//添加Cookie
return true;
}
/// <summary>
/// 加密
/// </summary>
/// <param name="str"></param>
/// <param name="encoding"></param>
/// <param name="toUpper"></param>
/// <param name="isReverse"></param>
/// <param name="count"></param>
/// <returns></returns>
private string MD5(string str, Encoding encoding=null, int count = 1)
{
if (encoding == null)
{
encoding = Encoding.Default;
}
var bytes = new MD5CryptoServiceProvider().ComputeHash(encoding.GetBytes(str));
var md5 = string.Empty;
for (int i = 0; i < bytes.Length; i++)
{
md5 += bytes[i].ToString("x").PadLeft(2, '0');
}
if (count <= 1) { return md5; }
return MD5(md5, encoding, --count);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- .net core利用orm如何操作mysql數(shù)據(jù)庫(kù)詳解
- .net MVC使用IPrincipal進(jìn)行Form登錄即權(quán)限驗(yàn)證(3)
- ASP.NET MVC下Ajax.BeginForm方式無(wú)刷新提交表單實(shí)例
- .net WINFORM的GDI雙緩沖的實(shí)現(xiàn)方法
- Asp.net webForm設(shè)置允許表單提交Html的方法
- Asp.net mvc驗(yàn)證用戶登錄之Forms實(shí)現(xiàn)詳解
- asp.net mvc中Forms身份驗(yàn)證身份驗(yàn)證流程
- asp.net core標(biāo)簽助手的高級(jí)用法TagHelper+Form
- 深入理解Asp.Net中WebForm的生命周期
- .NET Orm性能測(cè)試分析
相關(guān)文章
asp.net(C#)遍歷memcached緩存對(duì)象
出于性能考慮,memcached沒(méi)有提供遍歷功能,不過(guò)我們可以通過(guò)以下兩個(gè)stats命令得到所有的緩存對(duì)象。2010-03-03
.net微信開(kāi)發(fā) 如何獲取AccessToken
這篇文章主要為大家詳細(xì)介紹了微信開(kāi)發(fā)中AccessToken的獲取方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
深入Lumisoft.NET組件開(kāi)發(fā)碰到亂碼等問(wèn)題的解決方法
本篇文章介紹了,在Lumisoft.NET組件開(kāi)發(fā)中碰到亂碼等一些問(wèn)題的解決方法。需要的朋友參考下2013-05-05
asp.net jquery無(wú)刷新分頁(yè)插件(jquery.pagination.js)
采用Jquery無(wú)刷新分頁(yè)插件jquery.pagination.js 實(shí)現(xiàn)無(wú)刷新分頁(yè)效果:本示例Handler中采用StringBuilder的append方法追加HTML,小數(shù)據(jù)量可以,但是大數(shù)據(jù)或是布局常變,建議返回JSON格式的數(shù)據(jù),性能和靈活性更好,望使用者好好把握2013-01-01

