asp.net 自带的身份验证,form身份验证。
forms身份验证:身份登录,权限验证,传值。
1.登录:
验证登录是否正确,用FormsAuthentication.setAuthcookie(已验证的用户名称,是否持久)来创建一个验证的票据,用于加密存储用户登录名<Encrypt()函数加密>,存在context.user 中,并更具加密创建一个cookie.
singout()用于注销。
2.授权:
UrlAuthorizationModule用于权限管理,可以再config里面设置。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow users="*"/> //此处若有allow 必须在deny 前面!
</authorization>
</system.web>
</configuration>
3.传值:
http 协议是无状态的,无法验证访问的发起人,单项目往往需要验证是否为同一用户,但vs自带的context.user 只会存用户名,无法存储其他的信息,这时我就可以重新实现接口IPrincipal ,定义自己的context.user 来传更多的信息。
public class MyFormsPrincipal<TUserData> : IPrincipal where TUserData : class, new()
{ private IIdentity _identity; private TUserData _userData; public MyFormsPrincipal(FormsAuthenticationTicket ticket, TUserData userData) { if( ticket == null ) throw new ArgumentNullException("ticket"); if( userData == null ) throw new ArgumentNullException("userData"); _identity = new FormsIdentity(ticket); _userData = userData; } public TUserData UserData { get { return _userData; } } public IIdentity Identity { get { return _identity; } } public bool IsInRole(string role) { // 把判断用户组的操作留给UserData去实现。 IPrincipal principal = _userData as IPrincipal; if( principal == null ) throw new NotImplementedException(); else return principal.IsInRole(role); }
大神—超级链接:https://www.cnblogs.com/fish-li/archive/2012/04/15/2450571.html(全部学于这大佬)