📄 formsecurity.cs
字号:
using System;
using System.Web;
using System.Web.Security;
using System.Security.Principal;
using Club.Framework.Components;
using Club.Framework.Configuration;
namespace Club.Framework
{
/// <summary>
/// FormSecurity 的摘要说明。
/// </summary>
public class FormSecurity
{
public FormSecurity()
{
}
/// <summary>
/// 验证数据通过
/// </summary>
/// <param name="userId">用户Id</param>
/// <param name="userData">用户角色数据</param>
/// <param name="IsBackUrl">是否返回原本跳转的URL</param>
public static void Pass(string userId,string userData,bool IsBackUrl)
{
FormsAuthenticationTicket authTicket = new
FormsAuthenticationTicket(1,userId,DateTime.Now,DateTime.Now.AddMinutes(Config.Settings.CookieExpires),false,userData);
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket);
HttpContext.Current.Response.Cookies.Add(authCookie);
if(IsBackUrl)
{
HttpContext.Current.Response.Redirect(FormsAuthentication.GetRedirectUrl(userId,IsBackUrl));
}
}
/// <summary>
/// 登陆 1 --用户名或密码不正确 2 --未审核 3 管理员 4 --被锁定 0 --登陆成功 -1 --登陆成功 服务未启动或过期
/// </summary>
/// <param name="memberName"></param>
/// <param name="password"></param>
/// <returns></returns>
public static int Login(string userName,string password)
{
if(userName==string.Empty||password==string.Empty||userName==null||password==null)
{
throw new AdminException("用户名与用户密码不能为空!");
}
int degreeID;
int registerID;
int returnValue=Globals.DbProvider.Login(userName,MySecurity.SEncryptString(password),System.Web.HttpContext.Current.Request.UserHostAddress,out degreeID,out registerID);
if(returnValue==0||returnValue==-1||returnValue==4)
{
Pass(registerID.ToString(),degreeID.ToString(),false);
}
return returnValue;
}
/// <summary>
/// 检查是否启动服务
/// </summary>
/// <returns></returns>
public static bool IsService()
{
if(System.Web.HttpContext.Current.Request.Cookies["IsServic"]==null)
{
return false;
}
if(System.Web.HttpContext.Current.Request.Cookies["IsServic"].Value=="True")
{
return true;
}
return false;
}
/// <summary>
/// 返回用户角色进环境用户
/// </summary>
public static void RequestUserRoles()
{
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = HttpContext.Current.Request.Cookies[cookieName];
if(null == authCookie)
{
// 没有身份验证 cookie。
return;
}
FormsAuthenticationTicket authTicket = null;
try
{
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
}
catch(Exception ex)
{
throw new System.Exception("用户数据验证解密过程出错!",ex.InnerException);
}
if (null == authTicket)
{
return;
}
string[] roles = authTicket.UserData.Split(new char[]{'|',','});
FormsIdentity id = new FormsIdentity( authTicket );
// 该主体将通过整个请求。
GenericPrincipal principal = new GenericPrincipal(id, roles);
// 将新的主体对象附加到当前的 HttpContext 对象
HttpContext.Current.User = principal;
}
/// <summary>
/// 取得通过标识
/// </summary>
/// <returns></returns>
public static string GetPassID()
{
return HttpContext.Current.User.Identity.Name;
}
public static int GetMemberId()
{
if(HttpContext.Current.User.Identity.Name==null)
{
return 0;
}
try
{
return int.Parse(HttpContext.Current.User.Identity.Name);
}
catch
{
return 0;
}
}
public static int GetAdminLoginId()
{
if(HttpContext.Current.Request.Cookies["AdminUserId"]!=null)
{
if(HttpContext.Current.Request.Cookies["AdminUserId"].Value!=null)
{
try
{
return int.Parse(HttpContext.Current.Request.Cookies["AdminUserId"].Value);
}
catch
{
return 0;
}
}
}
else
{
return 0;
}
return 0;
}
public static void SignOutAdminLogin()
{
HttpContext.Current.Response.Cookies["AdminUserId"].Value="";
}
/// <summary>
/// 是否已验证了用户
/// </summary>
/// <returns></returns>
public static bool IsAuthenticated()
{
return HttpContext.Current.User.Identity.IsAuthenticated;
}
/// <summary>
/// 取得是否属于某角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public static bool IsInRole(string role)
{
return HttpContext.Current.User.IsInRole(role);
}
/// <summary>
/// 退出验证
/// </summary>
public static void SignOut()
{
//HttpContext.Current.Response.Cookies["MemberName"].Expires = DateTime.Now.AddYears(-100);
FormsAuthentication.SignOut();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -