专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

如何实现IPrincipal及实现自定义身份及权限认证_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 16:56:11       共计:3598 浏览

如何实现IPrincipal及实现自定义身份及权限认证?

[c-sharp]viewplaincopy

HttpContext.Current.User用户对象表示用户的安全上下文,代码当前即以该用户的名义运行,包括用户的标识(IIdentity)和它们所属的任何角色。所有用户对象都需要实现IPrincipal接口。(MSDN)

创建一个User类实现IIdentity接口重写相应的方法

publicclassUser:IIdentity

{

privateint_id;

privatestring_username;

privatestring_password;

privatebool_isAuthenticated;

#regionproperties

publicvirtualintId

{

get{returnthis._id;}

set{this._id=value;}

}

publicvirtualstringUserName

{

get{returnthis._userName;}

set{this._userName=value;}

}

publicvirtualstringPassword

{

get{returnthis._password;}

set{this._password=value;}

}

//是否通过认证

publicvirtualboolIsAuthenticated

{

get{returnthis._isAuthenticated;}

set{this._isAuthenticated=value;}

}

//重写为用户ID

publicvirtualstringName

{

get

{

if(this._isAuthenticated)

returnthis._id.ToString();

else

return"";

}

}

publicvirtualstringAuthenticationType

{

get{return"CuyahogaAuthentication";}

}

publicUser()

{

this._id=-1;

this._isAuthenticated=false;

}

}

创建一个CuyahogaPrincipal类实现IPrincipal接口

publicclassCuyahogaPrincipal:IPrincipal

{

privateUser_user;

//返回一个现实IIdentity接口的user对象

publicIIdentityIdentity

{

get{returnthis._user;}

}

//当前用户是否属于指定角色在以后的权限认证中可以使用也可以使用User类中的相关方法来代替

publicboolIsInRole(stringrole)

{

foreach(RoleroleObjectinthis._user.Roles)

{

if(roleObject.Name.Equals(role))

returntrue;

}

returnfalse;

}

///初始化若user通过授权则创建

publicCuyahogaPrincipal(Useruser)

{

if(user!=null&&user.IsAuthenticated)

{

this._user=user;

}

else

{

thrownewSecurityException("Cannotcreateaprincipalwithoutuvaliduser");

}

}

}

创建一个实现IHttpModule的AuthenticationModule类

publicclassAuthenticationModule:IHttpModule

{

privateconstintAUTHENTICATION_TIMEOUT=20;

publicAuthenticationModule()

{

}

publicvoidInit(HttpApplicationcontext)

{

context.AuthenticateRequest+=newEventHandler(Context_AuthenticateRequest);

}

publicvoidDispose()

{

//Nothinghere

}

//登录时验证用户时使用

publicboolAuthenticateUser(stringusername,stringpassword,boolpersistLogin)

{

//数据访问类

CoreRepositorycr=(CoreRepository)HttpContext.Current.Items["CoreRepository"];

stringhashedPassword=Encryption.StringToMD5Hash(password);

try

{

//通过用户名密码得到用户对象

Useruser=cr.GetUserByUsernameAndPassword(username,hashedPassword);

if(user!=null)

{

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:catch里面可以套try_java | ·下一条:曾经让你感到惊艳的游戏是什么_java

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有